我正在使用 CMake 构建一个简单的 C++ 项目,以下命名为P。P的结构很简单:
- P/src/
- P/src/package1
- P/src/packege2
- P/src/...
- P/src/主应用
我想在名为P_LIBS的变量中收集 package1, package2, ... 中的库。
在第一次尝试中,我尝试在最初设置在 src/CMakeLists.txt 文件中的名为P_LIBS的变量中收集 package1、package2、...中可用的库。但是,在子文件夹的 CMakeLists.txt 中对P_LIBS所做的更新不会传播到父文件夹。
我宁愿不在主 CMakeLists.txt 文件中编写库列表。我宁愿在目录树中移动时修改这样的变量。
在互联网上搜索后,我找不到任何有效的建议。如果我查看各种 Find 文件,我只会在它们的主 CMakeLists.txt 文件中看到很长的库列表。
有没有办法做我上面解释的(我希望)?
感谢 sakra 的链接,我能够将名称“传播”到父文件夹。但是,我添加到P_LIBS变量的名称后来被解释为“库”名称,而不是对 CMake 目标的引用。换句话说,如果
P_LIBS = {a, b}
'a' 和 'b' 被解释为库名称,即 CMake 生成:
gcc [...] -l a -o exe
代替
gcc [...] /path/to/a.o -o exe
(.o 或其他扩展名)