使用CMake将具有给定扩展名的所有文件复制到输出目录

Jep*_*sen 30 copy cmake

我已经看到我可以使用此命令来使用cmake复制目录:

file(COPY "myDir" DESTINATION "myDestination")
Run Code Online (Sandbox Code Playgroud)

(来自这篇文章)

我的问题是我不想复制所有myDir文件,而只复制那里的.h文件.我试过了

file(COPY "myDir/*.h" DESTINATION "myDestination")
Run Code Online (Sandbox Code Playgroud)

但我得到以下错误:

CMake Error at CMakeLists.txt:23 (file):
  file COPY cannot find
  "/full/path/to/myDIR/*.h".
Run Code Online (Sandbox Code Playgroud)

如何过滤要复制到目标文件夹的文件?

Jep*_*sen 50

我自己找到了解决方案:

file(GLOB MY_PUBLIC_HEADERS
  "myDir/*.h"
)
file(COPY ${MY_PUBLIC_HEADERS} DESTINATION myDestination)
Run Code Online (Sandbox Code Playgroud)


ang*_*tro 5

这也对我有用:

install(DIRECTORY "myDir/" 
        DESTINATION "myDestination" 
        FILES_MATCHING PATTERN "*.h" )
Run Code Online (Sandbox Code Playgroud)