Bash CMake安装(代码…)意外行为

Bash CMake安装(代码…)意外行为,bash,cmake,Bash,Cmake,我的CMakeLists.txt中有以下行: set(MY_COMMAND "cp /absolute/path/*.so /other/absolute/path") install(CODE "execute_process(COMMAND ${MY_COMMAND})") 它返回以下错误: cp: cannot stat ‘/absolute/path/*.so’: No such file or directory 指定库时: set(MY_COMMAND "cp /absolute

我的CMakeLists.txt中有以下行:

set(MY_COMMAND "cp /absolute/path/*.so /other/absolute/path")
install(CODE "execute_process(COMMAND ${MY_COMMAND})")
它返回以下错误:

cp: cannot stat ‘/absolute/path/*.so’: No such file or directory
指定库时:

set(MY_COMMAND "cp /absolute/path/somelib.so /other/absolute/path")
install(CODE "execute_process(COMMAND ${MY_COMMAND})")
它起作用了

当我从终端运行第一个命令时:

cp /absolute/path/*.so /other/absolute/path
它也起作用


有什么想法吗?

在终端中运行通配符表达式命令时,通配符扩展发生在终端本身内部,而不是通过
cp

然而,当它从CMake完成时,显然没有扩展通配符。因此,您需要先获取文件列表,然后使用获取的文件列表运行所需的命令


查看示例。

根据dreamzor的建议,我最终得出了以下解决方案:

install(CODE "file(GLOB MY_LIBS \"/absolute/path/*.so\")"
        CODE "file(INSTALL \${MY_LIBS} DESTINATION \"/other/absolute/path\")")
在堆栈溢出问题上,我们倾向于在问题帖中不混合问题和解决方案。如果您找到了问题的解决方案,您可以发布您的答案,并在其中描述解决方案。回答你自己的问题是完全正确的。请将
EDIT
子句下的描述移动到您自己的回复帖子中。