Die einfachste Art und Weise kopieren, wie mit CMakeCMake: Softlink Ressource (wie GLSL Shadern) oder jede Compilation
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
jedoch Ressourcen aus Quellverzeichnis in Build-Verzeichnis zu kopieren, aktualisieren diese die Ressourcen in Build-Verzeichnis nur wenn Ich rufe cmake
. Ich brauche etwas, die Ressourcen aktualisieren jedes Mal, wenn ichmake
anrufen.
z. Jetzt entwickle ich einige GLSL-Shader. Ich muß gleichzeitig den C sowohl ++ Code und GLSL-Code ändern, und ich brauche alles jedes Mal, wenn ich getroffen synchronisiert istcompile
oder run
in meiner IDE (ich benutze Codeblocks mit Projektdateien, die von CMake)
Die einfache Lösung würde sei zu machen softlink von Quellverzeichnis zu Build-Verzeichnis. Aber ich möchte es nicht manuell machen (es würde CMake umgehen und würde das Projekt fragiler machen). Kann CMake es für mich tun?
nur für Vollständigkeit, das ist, wie meine ganze CMakeList.txt
sieht aus wie
# ==== 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})
Haben Sie [diese Frage] überprüft (http://stackoverflow.com/questions/28533760/cmake-only-copies-files-on-reload-not-build)? Beide Antworten sind für Ihren Zweck geeignet. – Tsyvarev