Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
收集图书馆 我使用CMake来构建一个简单的C++项目,以下命名为“强> P_Cmake - Fatal编程技术网

收集图书馆 我使用CMake来构建一个简单的C++项目,以下命名为“强> P

收集图书馆 我使用CMake来构建一个简单的C++项目,以下命名为“强> P,cmake,Cmake,我想收集package1,package2。。。在一个名为P_LIBS的变量中 在第一次尝试中,我尝试收集package1、package2。。。在名为P_LIBS的变量中,最初在src/CMakeLists.txt文件中设置。但是,子文件夹的CMakeLists.txt中对P_LIBS的更新不会传播到父文件夹 我不希望在主CMakeLists.txt文件中编写库列表。我宁愿在目录树中移动时修改这样的变量 在网上搜索之后,我找不到任何有效的建议。如果我查看各种Find文件,我只会在它们的主CMa

我想收集package1,package2。。。在一个名为P_LIBS的变量中

在第一次尝试中,我尝试收集package1、package2。。。在名为P_LIBS的变量中,最初在src/CMakeLists.txt文件中设置。但是,子文件夹的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或其他扩展名)

您可能正在将目标列表构建为字符串,请尝试将其设置为列表。例如:

# in package1/CMakeLists.txt
set(P_LIBS ${P_LIBS} a b PARENT_SCOPE) 

您能否共享相关的
CMakeLists.txt
文件?(特别是,如何包含其他cmake文件,是通过
包含
还是
添加_子目录
?您应该查看此处提供的答案:另请参见