我有两个使用CMake的项目.项目A构建一个静态库,然后链接到项目B.问题是,当我从项目A更改源文件并构建两个项目时,项目B将不会再自动链接.如何将项目A(静态库)的输出添加到项目B?
编辑:这是我的问题的一个例子:
ProjectA CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
PROJECT(PROJECTA)
ADD_LIBRARY(projectA STATIC "src/foo.cpp")
Run Code Online (Sandbox Code Playgroud)
ProjectB CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
PROJECT(PROJECTB)
set(PROJECTA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../ProjectA)
include_directories(${PROJECTA_DIR}/include)
link_directories(${PROJECTA_DIR}/build)
ADD_EXECUTABLE(projectB "src/main.cpp")
target_link_libraries(projectB projectA)
Run Code Online (Sandbox Code Playgroud)
重现问题:
把我的评论转化为答案.
通常,当CMake项目必须合作时,使它们成为同一构建系统的一部分是有益的add_subdirectory().这样,CMake可以跟踪目标之间的依赖关系,自动解析对逻辑目标名称的引用等.
如果这不是您的选择,您至少应该删除link_directories(),而是使用库中的完整路径target_link_libraries().使用link_directories()一般不提倡,它是已知会引起问题.
| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |