Мне удалось собрать проект с помощью CMake.Сначала я изменил текущий рабочий каталог на lib / glfw / build.Я очищаю каталог с помощью
rm -rf *
, настраиваю и собираю проект с
cmake -DGLFW_BUILD_DOCS=false -DGLFW_BUILD_EXAMPLES=false -DGLFW_BUILD_TESTS=false -DGLFW_INSTALL=false ..
cmake --build .
Затем я создал CMakeLists.txt
, содержащий
cmake_minimum_required(VERSION 3.0)
project(Celer)
add_library(Celer src/celer/Graphics/Window.cpp src/celer/Debug/Logger.cpp)
target_include_directories(Celer PRIVATE lib/glfw/include)
add_executable(Sandbox test/sandbox/Sandbox.cpp)
target_include_directories(Sandbox PRIVATE src/celer)
target_link_directories(Sandbox PRIVATE lib/glfw/build/src/)
target_link_libraries(Sandbox PRIVATE Celer glfw3 dl X11 pthread)
в корневашего проекта.Я изменил cwd на build
, очистил его и собрал проект с
cmake ..
cmake --build .
Он работал как положено.Необходимо связать Sandbox со всеми указанными библиотеками, иначе он не будет собран.
Вы можете добавить сборку glfw в свой проект с помощью
cmake_minimum_required(VERSION 3.0)
project(Celer)
set(GLFW_BUILD_EXAMPLES false)
set(GLFW_BUILD_TESTS false)
set(GLFW_BUILD_DOC false)
set(GLFW_INSTALL false)
add_subdirectory(lib/glfw)
add_library(Celer src/celer/Graphics/Window.cpp src/celer/Debug/Logger.cpp)
target_include_directories(Celer PRIVATE lib/glfw/include)
add_executable(Sandbox test/sandbox/Sandbox.cpp)
target_include_directories(Sandbox PRIVATE src/celer)
target_link_directories(Sandbox PRIVATE lib/glfw/build/src/)
target_link_libraries(Sandbox PRIVATE Celer glfw3 dl X11 pthread)
Проблема в конфигурации сборкиВозможно, вы пытаетесь связать Celer со всеми зависимостями, но статическая библиотека не может быть связана.Вы должны связать Sandbox с зависимостями или использовать динамическую библиотеку.