cmake:添加依赖关系不在子目录中

假设有以下目录结构:
root
  |
  +--projects
  |      |
  |      +-test
  |         |
  |         +-CMakeFiles.txt
  |
  +--libs
       |
       +-testlib
            |
            +-CMakeFiles.txt

测试包含CMakeFiles.txt,testlib也包含CMakeFiles.txt. “test”生成可执行文件,“testlib”生成静态库.

我想要“测试”链接“testlib”而不使用符号链接,而不要将“testlib”库移动到“test”中的子目录中.

因为“testlib”不是“test”的子目录,所以我不能做

add_subdirectory("../../libs/testlib")

在测试的CMakeFiles.txt中 – cmake将抱怨“testlib”不在“test”子目录中.

另外,因为系统有几个不同的编译器,所以我不能简单地将“testlib”库安装到某种中央目录中,所以我想要测试来编译testlib的本地副本并与之链接(就好像testlib是一个子目录).如果已经更改,我也希望“测试”项目自动重建“testlib”.

那么我该怎么处理呢? cmake 2.8.4,winxp sp3.

您可以在根目录中提供顶级的CMakeLists.txt,或者为add_subdirectory命令提供一个二进制目录;例如
add_subdirectory("../../libs/testlib" "${CMAKE_CURRENT_BINARY_DIR}/testlib_build")

这将在当前构建目录中创建一个名为testlib_build的子目录,其中包含生成的testlib项目文件,但不包含源代码.

有关更多信息,请运行

cmake --help-command ADD_subdirectory

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...