首先,我应该说我已经看到了类似于我的问题的答案,但它们似乎都没有对我有意义。这是:
说我有以下简单的CMakeLists:
cmake_minimum_required (VERSION 2.8)
project (Example)
add_executable (Example Main.cpp)
然后,我想将已拥有自己的CMakeLists的库(例如glfw)与Example
相关联。当然,这会产生如何正确设置构建顺序的问题。
我将如何做到这一点?
答案 0 :(得分:1)
find_package
等自己编写,可以使用find_library
的FindGLFW.cmake。有关包含外部库的更多信息,请参阅CMake wiki Example
可执行文件中。这就是如何使用CMake,我不明白为什么没有在互联网的来源中回答。
答案 1 :(得分:1)
首先让我描述一下如何为GLFW做些什么。有关各种变化,请参阅下面的注释。
构建GLFW。由于官方GLFW负责人的CMake支持是currently broken,请使用此shaxbee分支:
git clone https://github.com/shaxbee/glfw.git
cmake -Hglfw -Bbuild/glfw -DCMAKE_INSTALL_PREFIX=inst -DCMAKE_BUILD_TYPE=Release
cmake --build build/glfw --target install --config Release
此安装步骤将安装inst/lib/cmake/glfw3/glfw3Config.cmake
glfw3
配置模块,客户端项目将使用该模块来查找GLFW。
您的项目应如下所示:
cmake_minimum_required(VERSION 2.8)
project(Example)
find_package(glfw3 REQUIRED)
add_executable(Example Main.cpp)
target_link_libraries(Example glfw3)
find_package
命令找到创建glfw3Config.cmake
库的IMPORTED
,CMake目标,其中包含在项目中使用GLFW所需的所有信息。
target_link_libraries
命令告诉CMake不仅要链接到GLFW,还要使用它的include目录和编译标志。
-DCMAKE_PREFIX_PATH=inst
配置项目(必要时使用完整路径)注意:其他配置模块或查找模块可能不提供IMPORTED
目标。请参阅实际配置或查找模块以获取帮助。它们通常会提供<PACKAGE>_INCLUDE_DIRS
和<PACKAGE>_LIBRARIES
个变量,这些变量应添加到目标的相应设置中:
target_include_directories(mytarget ${ZLIB_INCLUDE_DIRS})
或
include_directories(${ZLIB_INCLUDE_DIRS})
target_link_libraries
/ link_libraries
相同。