CMake如何正确创建目标之间的依赖关系
我想用CMake来设置C++项目和它使用的库之间的一些简单依赖关系。CMake如何正确创建目标之间的依赖关系
的设置如下:
- 项目
- 依赖
项目本身包含的源文件,其中包括从依附头和可执行文件时建造它需要与Dependency的静态库链接。
到目前为止,我可以得到这个工作,但我必须手动指定项目的CMakeLists文件中的依赖项的包含目录。我希望这会被自动拔出,并且我探索了使用find_package()命令来取得有限的成功并使事情变得更加复杂的选项。
我想要做的就是在项目之前建立依赖关系,并且具有针对库的项目链接并具有它的包含目录,是否有一种简单的简洁方式来实现此目的?
我目前cmake的文件:
项目,的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)
依赖性的CMakeLists.txt
project(Dependency)
add_library(Dependency SomethingToCompile.cpp)
target_link_libraries(Dependency)
这是不完全清楚自己想要做什么,和为什么Project和Depency必须分开构建。
我的第一个,虽然你的例子是
-
项目,的CMakeLists.txt
- 删除add_dependencies(项目依赖) 没有必要指定依赖,target_link_libraries()已经这样做。
-
按照相关性,的CMakeLists.txt
- 删除项目(依赖) 它建立一个图书馆,那么为什么要有自己的项目?
- 删除target_link_libraries(依赖) ,因为它并没有
回答你的问题。依赖项可能是作为git子模块包含的共享库的项目。共享库也可以在没有外部项目的情况下工作。 – Arne 2014-09-11 12:10:15
由于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)
结帐:http://stackoverflow.com/questions/10004134/cmake-add-dependency-not-in-subdirectory – 2016-01-07 10:48:28