我正在尝试使用CMake在C ++项目和它使用的库之间建立一些简单的依赖关系。
设置如下
项目本身包含包含来自Dependency
的标头的源文件,当构建可执行文件时,它需要与Dependency
的静态库链接。
到目前为止,我可以使用此功能,但我必须手动在Dependency
文件的CMakeLists.txt
文件中指定Project
的包含目录。我希望自动将其拉出来,并且我已经探索了使用find_package()
命令的选项,但只取得了有限的成功并使事情变得更加复杂。
我想要做的就是在Dependency
之前构建Project
并且Project
链接到库并拥有其包含目录。有没有简单明了的方法来实现这个目标?
我目前的CMake文件:
Project
,档案CMakeLists.txt
:
cmake_minimum_required (VERSION 2.6)
project (Project)
include_directories ("${PROJECT_SOURCE_DIR}/Project")
add_subdirectory (Dependency)
add_executable (Project main.cpp)
target_link_libraries (Project Dependency)
add_dependencies(Project Dependency)
Dependency
,档案CMakeLists.txt
:
project(Dependency)
add_library(Dependency SomethingToCompile.cpp)
target_link_libraries(Dependency)
答案 0 :(得分:21)
自CMake 2.8.11
以来,您可以使用target_include_directories
。只需在您的DEPENDENCY项目中添加此功能,并填写您希望在主项目中看到的目录。 CMake将关心其余部分。
PROJECT,CMakeLists.txt:
cmake_minimum_required (VERSION 2.8.11)
project (Project)
include_directories (Project)
add_subdirectory (Dependency)
add_executable (Project main.cpp)
target_link_libraries (Project Dependency)
依赖性,CMakeLists.txt
project (Dependency)
add_library (Dependency SomethingToCompile.cpp)
target_include_directories (Dependency PUBLIC include)
答案 1 :(得分:0)
目前还不清楚你想做什么,以及为什么必须单独构建Project和Depency。
我的第一个例子就是
在PROJECT中,CMakeLists.txt
依赖,CMakeLists.txt