C++ 资源文件更改后如何在CLion中生成CMake

C++ 资源文件更改后如何在CLion中生成CMake,c++,cmake,clion,C++,Cmake,Clion,在CLion项目中,我需要将一些资源复制到二进制文件夹。它们是GLSL着色器,因此在编辑它们时,我希望能够看到结果。不幸的是,CLion仅在源文件发生更改时重建项目,因此如果我编辑GLSL文件但保持源文件不变,CLion将不会重建,因此新文件将不会复制到二进制目录。我该如何解决这个问题 这是我将文件移动到目标OpenGL_测试的二进制目录中的代码: add_custom_command(TARGET OpenGL_Test PRE_BUILD COMMAND ${CMAKE_COMMAN

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

这是我将文件移动到目标OpenGL_测试的二进制目录中的代码:

add_custom_command(TARGET OpenGL_Test PRE_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/res 
    $<TARGET_FILE_DIR:OpenGL_Test>/res
)
您可以使用add_custom_target with ALL选项,这将强制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)

这给了我以下错误:错误:目标间依赖关系图包含以下强连接组件循环:实用程序类型的copy_着色器依赖于OpenGL_测试强OpenGL_测试类型的可执行文件依赖于copy_着色器强至少其中一个目标不是静态_库。仅在静态库之间允许循环依赖关系。它将复制所有文件还是仅复制已添加/修改的文件?