Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
将CMake生成器表达式拆分为函数参数_Cmake - Fatal编程技术网

将CMake生成器表达式拆分为函数参数

将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

我有以下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
    $<$<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列表
)