【发布时间】:2019-03-03 04:48:41
【问题描述】:
使用 CMake 将资源从源目录复制到构建目录的最简单方法是
file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
但是,这只有在我调用cmake 时才会更新构建目录中的资源。我需要更新资源的东西每次调用 make。
例如现在我开发了一些 GLSL 着色器。我需要同时更改 C++ 代码和 GLSL 代码,并且我需要 每次点击时同步 compile 或 run 在我的 IDE 中(我将 CodeBlocks 与 CMake 生成的项目文件一起使用)
简单的解决方案是将 softlink 从源目录创建到构建目录。但我不想手动进行(它会绕过 CMake 并使项目更加脆弱)。 CMake 可以为我做吗?
为了完整性,这就是我的整个 CMakeList.txt 的样子
# ==== common header
cmake_minimum_required ( VERSION 2.8 )
project ( SimpleSimulationEngine )
if( UNIX )
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=gnu++0x" )
endif()
SET( AXULIARY_COMPILE_FLAGS "-w -O2")
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${AXULIARY_COMPILE_FLAGS}" )
SET( COMMON_SRCS "${CMAKE_SOURCE_DIR}/common" )
include_directories(
${COMMON_SRCS}
${COMMON_SRCS}/algorithms
${COMMON_SRCS}/math
${COMMON_SRCS}/SDL2OGL3
)
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_utils )
find_package( OpenGL REQUIRED )
find_package( GLEW REQUIRED )
find_package( GLU REQUIRED )
find_package( SDL2 REQUIRED )
# ==== Particular build target
add_executable ( test_SphereShader test_SphereShader.cpp )
target_link_libraries( test_SphereShader ${OpenGL_LIBRARY} ${GLU_LIBRARY} ${GLEW_LIBRARY} ${SDL2_LIBRARY} )
file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/shaders DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
【问题讨论】:
-
你检查过this question吗?它的两个答案都适合您的目的。
标签: c++ cmake resources shader