CMake MSVC:如何为单个配置添加自定义命令? (调试)
CMake MSVC: How to add a custom command for a single configuration? (Debug)
我只想为调试配置添加以下命令:
if (MSVC)
add_custom_command(TARGET my_target PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dst})
endif()
src
和 dst
只是路径字符串。
我尝试使用我在相关答案中看到的示例来调整代码 , here and 。
但他们都没有工作。要么具体情况略有不同,要么他们只是对其他配置使用不同的参数执行相同的命令。
我所有的改编尝试都导致命令格式错误或根本无法解决问题。
我希望其他配置完全不需要添加命令。
如何完成这个简单的任务?
我设法使用虚拟空字符串进行调试以外的配置使其工作:
string(
APPEND copy_cmd
"$<IF:$<CONFIG:Debug>,"
"${CMAKE_COMMAND};-E;copy;${pdb_src};${pdb_dst},"
""
">"
)
add_custom_command(TARGET ${target_name} PRE_BUILD COMMAND "${copy_cmd}" COMMAND_EXPAND_LISTS)
请注意,“”字符串基本上是 if 的 'else'。它使命令无效。
我喜欢使用true
使命令无效
add_custom_command(TARGET ${target_name} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:Debug>,copy,true> ${src} ${dst}
COMMAND_EXPAND_LISTS)
如果 not 在 Debug
你应该有 cmake -E true ...
即 true
将把命令变成没有操作。
true
Do nothing, with an exit code of 0
.
来源:https://cmake.org/cmake/help/latest/manual/cmake.1.html#run-a-command-line-tool
注意:自 3.16
起可用
来源:https://cmake.org/cmake/help/latest/release/3.16.html#command-line
我只想为调试配置添加以下命令:
if (MSVC)
add_custom_command(TARGET my_target PRE_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dst})
endif()
src
和 dst
只是路径字符串。
我尝试使用我在相关答案中看到的示例来调整代码
我希望其他配置完全不需要添加命令。
如何完成这个简单的任务?
我设法使用虚拟空字符串进行调试以外的配置使其工作:
string(
APPEND copy_cmd
"$<IF:$<CONFIG:Debug>,"
"${CMAKE_COMMAND};-E;copy;${pdb_src};${pdb_dst},"
""
">"
)
add_custom_command(TARGET ${target_name} PRE_BUILD COMMAND "${copy_cmd}" COMMAND_EXPAND_LISTS)
请注意,“”字符串基本上是 if 的 'else'。它使命令无效。
我喜欢使用true
add_custom_command(TARGET ${target_name} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E $<IF:$<CONFIG:Debug>,copy,true> ${src} ${dst}
COMMAND_EXPAND_LISTS)
如果 not 在 Debug
你应该有 cmake -E true ...
即 true
将把命令变成没有操作。
true
Do nothing, with an exit code of0
.
来源:https://cmake.org/cmake/help/latest/manual/cmake.1.html#run-a-command-line-tool
注意:自 3.16
起可用
来源:https://cmake.org/cmake/help/latest/release/3.16.html#command-line