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代码片段是做什么的?_Cmake - Fatal编程技术网

下面的cmake代码片段是做什么的?

下面的cmake代码片段是做什么的?,cmake,Cmake,特别是这里的优化/调试意味着什么?这是使用cmake添加lib的标准方法吗?我觉得这是一种“误用”。这些都只是分配给一个变量TestProject\u additional\u libs。这种魔力可能会在以后发生,当它被扩展成类似这样的东西时。我不知道有人能做那样的事。但事实上,当它以这种方式书写时,究竟发生了什么还不清楚 引用上述链接中的手册: “调试”、“优化”或“常规”关键字表示 紧跟其后的库仅用于 相应的构建配置 这将变量TestProject\u additional\u libs的值

特别是这里的优化/调试意味着什么?这是使用cmake添加lib的标准方法吗?

我觉得这是一种“误用”。这些都只是分配给一个变量
TestProject\u additional\u libs
。这种魔力可能会在以后发生,当它被扩展成类似这样的东西时。我不知道有人能做那样的事。但事实上,当它以这种方式书写时,究竟发生了什么还不清楚

引用上述链接中的手册:

“调试”、“优化”或“常规”关键字表示 紧跟其后的库仅用于 相应的构建配置


这将变量
TestProject\u additional\u libs
的值设置为包含
优化的分号分隔列表;foobar.lib;调试;foobard.lib

通常,
${TestProject\u additional_libs}
将在命令中使用,以指示
foobar.lib
应用于优化版本(如发行版),而
foobard.lib
应用于调试版本:

set(TestProject_additional_libs
        optimized  foobar.lib   
        debug   foobard.lib    
}  

mlt所说的;最有可能生成的库有两个版本,当调用target_link_库时,它将使用CMAKE_BUILD_类型来确定要链接的库。@mlt这不是误用,而是如何设计
target_link_库
。@Doug
CMAKE_BUILD_类型
仅支持基于make的生成器,因此@mlt引用的关于“构建配置”的文档在技术上更加准确。
target_link_libraries(<target> <files> ${TestProject_additional_libs})
target_link_libraries(<target> <files> optimized foobar.lib debug foobard.lib)