Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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
C++ 基于构建配置(调试/发布)设置cmake变量,哪里出了问题?_C++_Cmake - Fatal编程技术网

C++ 基于构建配置(调试/发布)设置cmake变量,哪里出了问题?

C++ 基于构建配置(调试/发布)设置cmake变量,哪里出了问题?,c++,cmake,C++,Cmake,我是cmake的新手,玩得很开心。我希望变量包含路径,这取决于我是否处于调试或发布配置中。我的代码如下所示: set( LIBRARY_DIR $<$<CONFIG:DEBUG>: "${CMAKE_SOURCE_DIR}/lib/debug"> $<$<CONFIG:RELEASE>:"${CMAKE_SOURCE_DIR}/lib/release">) # Directory is deb

我是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}")
set(库目录)
$
$)#目录依赖于调试/发布
消息(状态“目录为${LIBRARY\u DIR}”)
然而,我得到的信息令人惊讶:

Directory is $<$<CONFIG:Debug>:;C:/path/lib/debug;>;$<$<CONFIG:Release>:"C:/path/lib/release"
目录是$$ 编辑:

再看一眼,不是我原来写的

你的问题是写论点。您最好签出
cmake language
doc的部分

你的问题在于你如何写论点。因此,cmake lexer获得的代币与您实际想要的完全不同。应该使用所谓的
带引号的参数
括号参数
将生成器表达式作为一个整体绑定


另一个问题是评估的时间

这是因为生成器是在生成步骤进行评估的。请参阅
cmake生成器表达式
文档的一节

add_custom_target(genexdebug COMMAND ${CMAKE_COMMAND} -E echo "$<...>")

### OR

file(GENERATE OUTPUT filename CONTENT "$<...>")
add_custom_目标(genexdebug命令${CMAKE_命令}-E echo“$”)
###或
文件(生成输出文件名内容“$”)
编辑:

再看一眼,不是我原来写的

你的问题是写论点。您最好签出
cmake language
doc的部分

你的问题在于你如何写论点。因此,cmake lexer获得的代币与您实际想要的完全不同。应该使用所谓的
带引号的参数
括号参数
将生成器表达式作为一个整体绑定


另一个问题是评估的时间

这是因为生成器是在生成步骤进行评估的。请参阅
cmake生成器表达式
文档的一节

add_custom_target(genexdebug COMMAND ${CMAKE_COMMAND} -E echo "$<...>")

### OR

file(GENERATE OUTPUT filename CONTENT "$<...>")
add_custom_目标(genexdebug命令${CMAKE_命令}-E echo“$”)
###或
文件(生成输出文件名内容“$”)

@drescherjm如果是的话,我返回的消息没有解析路径,而是生成器的文本字符串,有什么原因吗?@drescherjm是的,看起来确实如此。有没有办法打印出最终结果而不是内部结果?我删除了我的评论,因为我不是100%确定。@drescherjm是的,我认为你是错的。很确定它把所有这些都放到了变量中。作为更新,我确实找到了一个描述相同问题的线程。显然,直到构建阶段才对生成器进行评估。我想知道是否仍有可能以我想要的方式使用生成器(构建库路径),但这不是我目前的方式:@drescherjm如果是,我返回的消息没有解析的路径,而是生成器的文本字符串,原因是什么?@drescherjm是的,看起来确实如此。有没有办法打印出最终结果而不是内部结果?我删除了我的评论,因为我不是100%确定。@drescherjm是的,我认为你是错的。很确定它把所有这些都放到了变量中。作为更新,我确实找到了一个描述相同问题的线程。显然,直到构建阶段才对生成器进行评估。我想知道是否仍然可以按照我想要的方式使用生成器(构建库路径),但这不是我目前的方式: