我试图使用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)
Run Code Online (Sandbox Code Playgroud)
Dependency,档案CMakeLists.txt:
project(Dependency)
add_library(Dependency SomethingToCompile.cpp)
target_link_libraries(Dependency)
Run Code Online (Sandbox Code Playgroud)
dip*_*ipp 22
既然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)
Run Code Online (Sandbox Code Playgroud)
依赖性,CMakeLists.txt
project (Dependency)
add_library (Dependency SomethingToCompile.cpp)
target_include_directories (Dependency PUBLIC include)
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚您想要做什么,以及为什么Project必须Dependency单独构建。
我的第一个例子是
在PROJECT的CMakeLists.txt:
add_dependencies(Project Dependency)
无需指定依赖项,target_link_libraries()已经这样做了。在DEPENDENCY的 CMakeLists.txt:
project(Dependency)
它构建了一个库,那么为什么要有自己的项目呢?target_link_libraries(Dependency)
因为它什么也不做| 归档时间: |
|
| 查看次数: |
47299 次 |
| 最近记录: |