假设有以下目录结构:
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