提问人:Danny 提问时间:12/1/2020 最后编辑:Danny 更新时间:12/1/2020 访问量:434
根据构建配置(调试/发布)设置 cmake 变量,我哪里出了问题?[复制]
Setting a cmake variable based on build configuration (Debug/Release), where am I going wrong? [duplicate]
问:
我是 cmake 的新手,玩得很开心。我希望变量包含路径,具体取决于我是否处于调试或发布配置中。我的代码如下所示:
set( LIBRARY_DIR
$<$<CONFIG:DEBUG>: "${CMAKE_SOURCE_DIR}/lib/debug">
$<$<CONFIG:RELEASE>:"${CMAKE_SOURCE_DIR}/lib/release">) # Directory is debug/release dependent
message (STATUS "Directory is ${LIBRARY_DIR}")
然而,我得到的信息令人惊讶:
Directory is $<$<CONFIG:Debug>:;C:/path/lib/debug;>;$<$<CONFIG:Release>:"C:/path/lib/release"
就好像我的生成器根本没有得到解决,并且被解释为字符串文字。这对我来说似乎很奇怪,但正如我所说,我是 cmake 的新手,这对我来说很奇怪。我犯了什么明显的错误吗?
答:
0赞
TerryTsao
12/1/2020
#1
编辑:
再看一眼,不是我最初写的。
你的问题是写论点。你最好看看文档的command_arguments部分。cmake-language
你的问题在于你如何写论点。因此,cmake lexer 获得的令牌与您实际想要的完全不同。您应该使用所谓的 or 来绑定生成器表达式作为一个整体。quoted argument
bracket argument
另一个问题是评估时间。
这是因为发电机是在生成步骤中评估的。请参阅文档的调试部分。cmake-generator-expression
add_custom_target(genexdebug COMMAND ${CMAKE_COMMAND} -E echo "$<...>")
### OR
file(GENERATE OUTPUT filename CONTENT "$<...>")
评论