1

I have been trying to use CMake, I've successed to add GLEW but keep fighting against it when I'm trying to add Ultralight.

Ultralight SDK contains 4 .lib and 4 .dll files (I'm trying to use the .lib ones): ultralight Lib folder

Also the header files are in the include folder like this : ultralight include folder

So I've tried this CMakelist.txt :

cmake_minimum_required (VERSION 3.8)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

PROJECT(HumbugEngine)

include(ExternalProject)
find_package(OpenGL REQUIRED)

set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)

#
# Dependencies
#

#
# ULTRALIGHT
#
set(ULTRALIGHTS_DIR_SDK "deps/ultralight")
set(ULTRALIGHT_INCLUDE_DIR "${ULTRALIGHTS_DIR_SDK}/include")
set(ULTRALIGHT_LIBRARY_DIR "${ULTRALIGHTS_DIR_SDK}/lib")

add_library(ultralight STATIC "${ULTRALIGHT_LIBRARY_DIR}/Ultralight.lib")
add_library(ultralightCore STATIC "${ULTRALIGHT_LIBRARY_DIR}/UltralightCore.lib")
add_library(webcore STATIC "${ULTRALIGHT_LIBRARY_DIR}/WebCore.lib")
add_library(appcore STATIC "${ULTRALIGHT_LIBRARY_DIR}/AppCore.lib")

set_target_properties(ultralight PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(ultralightCore PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(webcore PROPERTIES LINKER_LANGUAGE CXX)
set_target_properties(appcore PROPERTIES LINKER_LANGUAGE CXX)

#
# GLEW
#
add_definitions(-DGLEW_STATIC)
add_subdirectory(deps/glew EXCLUDE_FROM_ALL)

#
# Headers
#
include_directories(
    ${PROJECT_SOURCE_DIR}/include
    ${ULTRALIGHT_INCLUDE_DIR}
)

#
# Sources
#
file(GLOB PROJECT_SOURCES "src/*.cpp")

add_executable(${PROJECT_NAME} ${PROJECT_SOURCES})

target_link_libraries(
    ${PROJECT_NAME}
    ${OPENGL_LIBRARIES}
    libglew_static
    ultralight ultralightCore webcore appcore
)

My build folder looks like this : build image

The build is a success, I don't have any errors but in visual I keep getting

LINK : fatal error LNK1104: cannot open file 'Debug\ultralight.lib'

Thanks for the help, can't find a hint about what I'm doing wrong, I'm a CMake total beginner.

PS: I can't post images because I just created this account :(

Call_in
  • 66
  • 5
  • Calls to `add_library(appcore STATIC ...)` like this should be provided source(s), not the actual pre-built libraries. If the library locations are known, you can provide the full path directly in your call to `target_link_libraries()`, or use `find_library()` as it is used in [this](https://stackoverflow.com/a/2603449/3987854) answer. – Kevin Sep 25 '19 at 20:34
  • Thanks @squareskittles for the clarification, I've tried that and it works – Call_in Sep 25 '19 at 22:31

0 Answers0