【问题标题】:How to make CMake build in CLion after changes in resource files更改资源文件后如何在 CLion 中构建 CMake
【发布时间】:2015-02-16 17:00:42
【问题描述】:

在 CLion 项目中,我需要将一些资源复制到二进制文件夹。它们是 GLSL 着色器,所以当我编辑它们时,我希望能够看到结果。不幸的是,CLion 仅在源代码发生更改时重建项目,因此如果我编辑 GLSL 文件但保持源文件不变,CLion 不会重建,因此新文件不会被复制到二进制目录。我该如何解决这个问题?

这是我将文件移动到目标 OpenGL_Test 的二进制目录的代码:

add_custom_command(TARGET OpenGL_Test PRE_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/res 
    $<TARGET_FILE_DIR:OpenGL_Test>/res
)

【问题讨论】:

    标签: c++ cmake clion


    【解决方案1】:

    您可以使用 add_custom_targetALL 选项,这将强制 CMake 在每次构建时复制目录:

    add_custom_target(copy_shaders ALL
        COMMAND ${CMAKE_COMMAND} -E copy_directory 
            "${CMAKE_SOURCE_DIR}/res" "$<TARGET_FILE_DIR:OpenGL_Test>/res"
        COMMENT "Copy shaders to build tree"
        VERBATIM)
    

    【讨论】:

    • 这给了我以下错误:错误:目标间依赖图包含以下强连接组件(循环):UTILITY 类型的“copy_shaders”依赖于“OpenGL_Test”(强)“OpenGL_Test” EXECUTABLE 类型取决于“copy_shaders”(强)这些目标中至少有一个不是 STATIC_LIBRARY。循环依赖只允许在静态库之间。
    • 它会复制所有文件还是只复制已添加/修改的文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多