将CMake生成器表达式拆分为函数参数
我有以下CMake段将我需要的一些DLL复制到可执行文件的输出文件夹中:将CMake生成器表达式拆分为函数参数,cmake,Cmake,我有以下CMake段将我需要的一些DLL复制到可执行文件的输出文件夹中: file(GLOB Debug_DLLS "${SDK_DIR}/Libs/*.dll") file(GLOB Release_DLLS "${SDK_DIR}/Libsr/*.dll") add_custom_command(TARGET myApp POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different
file(GLOB Debug_DLLS "${SDK_DIR}/Libs/*.dll")
file(GLOB Release_DLLS "${SDK_DIR}/Libsr/*.dll")
add_custom_command(TARGET myApp POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<$<CONFIG:Debug>:${Debug_DLLS}>
$<$<NOT:$<CONFIG:Debug>>:${Release_DLLS}>
$<TARGET_FILE_DIR:myApp>
)
文件(GLOB Debug_dll“${SDK_DIR}/Libs/*.dll”)
文件(GLOB Release_dll“${SDK_DIR}/Libsr/*.dll”)
添加自定义命令(目标myApp后期生成)
COMMAND${CMAKE_COMMAND}-E copy_如果不同
$
$
$
)
如果不同的应支持多个参数,则复制
我100%确信SDK_DIR是一个有效的文件夹,并且Release_DLLS和Debug_DLLS变量也是有效的。如果我只是将一个简单的文件路径放入Release\u dll中,代码就可以运行了
但是,在构建时,我只得到一个错误:在我的母语系统语言中,“系统找不到提供的路径”。为什么不能处理多个文件?我需要引用生成器表达式,并向命令添加命令扩展列表。 以下代码可以工作,并且可能是根据生成类型将不同DLL复制到输出目录的最灵活的解决方案:
file(GLOB Debug_DLLS "${SDK_DIR}/Libs/*.dll")
file(GLOB Release_DLLS "${SDK_DIR}/Libsr/*.dll")
add_custom_command(TARGET myApp POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"$<$<CONFIG:Debug>:${Debug_DLLS}>"
"$<$<NOT:$<CONFIG:Debug>>:${Release_DLLS}>"
$<TARGET_FILE_DIR:myApp>
COMMAND_EXPAND_LISTS
)
文件(GLOB Debug_dll“${SDK_DIR}/Libs/*.dll”)
文件(GLOB Release_dll“${SDK_DIR}/Libsr/*.dll”)
添加自定义命令(目标myApp后期生成)
COMMAND${CMAKE_COMMAND}-E copy_如果不同
"$"
"$"
$
命令\u展开\u列表
)