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}/)
您可以在最后一行中看到我尝试在每次构建项目时复制项目资产。
有没有办法确保这种情况发生?
解决方案
add_custom_command
可能是你想要的
add_custom_command(TARGET ${ProjectName} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/assets ${PROJECT_BUILD_DIR}/
)
推荐阅读
- sql - 如何在oracle中获取两列之间的日期和金额?
- python-2.7 - For循环在使用Jinja 2的嵌套块中不起作用
- azure - 尝试在天蓝色函数中使用绑定名称作为参数时出现 System.InvalidOperationException
- fullcalendar - 波斯语中的全日历槽标签
- asp.net-core - 将 SignalR 集线器与 Redis 一起使用时如何跨负载均衡器服务器跨越 ConcurrentDictionary
- c - 计算字符串中空格、制表符和换行符数量的程序
- typescript - 如何使用 createProgram 从 ts 源代码生成 js 文件?
- angular - this.gridApi.setDomLayout('print'); 不是函数
- scala - 是否有任何内置函数可用于在 apache flink 中运行源同步?
- javascript - 如何在反应中映射一组地图?