set(TestProject_additional_libs
optimized foobar.lib
debug foobard.lib
}
特别是这里的优化/调试是什么意思?这是使用 cmake 添加库的标准方法吗?
set(TestProject_additional_libs
optimized foobar.lib
debug foobard.lib
}
特别是这里的优化/调试是什么意思?这是使用 cmake 添加库的标准方法吗?
对我来说,这似乎是一种“滥用”。这些都只是分配给一个变量TestProject_additional_libs
。当它在诸如target_link_libraries之类的东西中扩展时,魔法可能会在稍后发生。我不知道有人可以做这样的事情。但实际上,当它以这种方式编写时,实际上并不清楚到底发生了什么。
从上述链接中引用手册:
“debug”、“optimized”或“general”关键字表示紧随其后的库仅用于相应的构建配置。
这会将变量的值设置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)