CMake-自定义拷贝命令

内容目录

在构建过程中,因为自己写的一些着色器需要被 图形API 调用,并且保证生成任何配置的时候依旧可用,需要在构建完成后将渲染模块的 Shaders 文件复制到可执行文件的目录下。
那么我们就需要利用 CMake 复制一整个文件夹过去

add_custom_command(
    TARGET ${MODULE_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory
        ${CMAKE_CURRENT_SOURCE_DIR}/Shaders  ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIG>/Shaders
    COMMENT "Copying Shaders.. ${CMAKE_CURRENT_SOURCE_DIR}/Shaders to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIG>/Shaders"
)

首先添加一个自定义命令,目标填写模块的名字,修改为 POST_BUILD,与之相对的是 PRE_BUILD-E 指的是调用 CMake 跨平台工具的选项,后面跟随 copy_directory。
接下来的参数分别是 原文件夹:${CMAKE_CURRENT_SOURCE_DIR}/Shaders,目标文件夹:${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIG>/Shaders
最后调用 COMMENT 在执行自定义命令时输出内容。

由于每次修改都需要复制一下,所以这里选择的是构建后,如果你的文件是定死的,不需要每次修改重新引入,则可以使用:

file(COPY ${CMAKE_SOURCE_DIR}/ DESTINATION ${CMAKE_BINARY_DIR}/)

此代码是直接拷贝,但注意,此命令是在配置阶段执行的,所以说只在用 CMake 构建项目配置的时候执行一次。

同步Sch