【发布时间】:2014-11-18 10:08:18
【问题描述】:
我有以下目录结构和库依赖:
./lib-a
./lib-b (depending on lib-a)
每个目录都包含一个CMakeLists.txt 文件,用于生成自己的库。
我正在使用外源构建策略。
为了说lib-b依赖于lib-a,我把命令add_subdirectory(../lib-a lib-a)放到了./lib-b/CMakeLists.txt里面,按照official CMake tutorial的教导。这样我就知道在./lib-b/build dir中创建了一个子目录lib-a。
这不是我想要的行为。我想获得的是 CMake 在生成 lib-b 时引用 lib-a,如果尚未生成 lib-a,CMake 应该使用 CMakeLists.txt 在 ./lib-a/build 内部生成它lib-a(在处理依赖项时的行为类似于 make 工具)。
我还想补充一点,在我的示例中我没有使用根 CMakeLists.txt,但我想要的是 lib-b/CMakeLists.txt 声明对 lib-a 的依赖,从而使 lib -a 使用它自己的 lib-a/CMakeLists.txt 编译,如果还没有的话。
这是目录结构及其内容:
lib-a/
CMakeLists.txt (for compiling lib-a)
src/
test.cpp
include/
test.hpp
lib-b/
main.cpp
CMakeLists.txt (for compiling lib-b; here is the point where I would like to make reference to lib-a, that I need for the generation of lib-b)
lib-b/main.cpp 还包含 test.hpp 的 lib-a 的包含,因为它使用了 lib-a 的功能。在lib-b/CMakeLists.txt的规范中应该考虑到这一点。
lib-a/CMakeLists.txt和lib-b/CMakeLists.txt这两个文件的内容应该是什么?
【问题讨论】: