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

Recent Posts

UE-Rider 无法解析 SDK 解决方案

无法解析 SDK“Micros…

5 天 ago

杂项 – 关于Ascii字符画生成相关网站

网站 如果想实现这样的注释效果…

2 周 ago

C++-分数泛型模板类实现

前言 在引擎库中,有时候可能会…

3 周 ago

C++-HashMap 数据结构的实现

前要说明 HashMap 是一…

1 月 ago

杂项 – Markdown

跳转到 Markdown – …

1 月 ago

杂谈-我都玩过什么游戏

在面试的过程中,我发现游戏公司…

3 月 ago