为什么在询问时CMAKE不总是复制资源?

时间:2018-12-17 00:37:45

标签: c++ cmake

我有一个项目,其中包含一些资产(着色器)文件,这些文件也经常更新,因此每次构建项目时,每次都需要将其复制到构建目标文件夹中。

现在,第一次复制文件,但是随后(从Clion内部)重建项目时,不会连续复制文件。例如,如果我从将它们复制到的目录中删除它们,它们将不会再次显示。

这是我的Cmake文件:

# Name for this project
set(PROJECT_NAME "3d_model")

# Choose the library for the final build
set(PROJECT_BUILD_DIR ${CMAKE_SOURCE_DIR}/bin/${PROJECT_NAME})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BUILD_DIR}/$<CONFIG>)

# Set sources
set(PROJECTS_SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/projects)
set(SOURCES
  src/main.cpp
  ${INCLUDE_DIR}/glad/src/glad.c)

add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} ${CMAKE_DL_LIBS} glfw ${GLFW_LIBRARIES})

# Copy resources
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/assets DESTINATION ${PROJECT_BUILD_DIR}/)

您可以在最后一行看到我在每次构建项目时试图复制项目资产的尝试。

有没有办法确保这种情况发生?

1 个答案:

答案 0 :(得分:1)

add_custom_command可能就是您想要的

add_custom_command(TARGET ${ProjectName} PRE_BUILD
  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/assets ${PROJECT_BUILD_DIR}/
 )