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

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

4

2 回答 2

1

对我来说,这似乎是一种“滥用”。这些都只是分配给一个变量TestProject_additional_libs当它在诸如target_link_libraries之类的东西中扩展时,魔法可能会在稍后发生。我不知道有人可以做这样的事情。但实际上,当它以这种方式编写时,实际上并不清楚到底发生了什么。

从上述链接中引用手册:

“debug”、“optimized”或“general”关键字表示紧随其后的库仅用于相应的构建配置。

于 2012-06-19T23:26:07.100 回答
1

这会将变量的值设置TestProject_additional_libs为一个以分号分隔的列表,其中包含optimized;foobar.lib;debug;foobard.lib.

通常,${TestProject_additional_libs}然后将在target_link_libraries命令中使用以指示foobar.lib应该用于优化构建(如发布)并foobard.lib应该在调试构建中使用:

target_link_libraries(<target> <files> ${TestProject_additional_libs})

为避免创建临时变量,您还可以在target_link_libraries调用本身中使用类似的语法:

target_link_libraries(<target> <files> optimized foobar.lib debug foobard.lib)
于 2012-06-19T23:27:30.327 回答