CMake ile inşa dizine kaynak dizinden kopyalama kaynakları nasıl en basit yolu ancakCKağıt: (örneğin GLSL shader gibi) softlink kaynak ya da her complilation
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
kopyalasanız, bu yapı dizinde kaynakları günceller Sadececmake
'u aradığımda.make
'u her aradığımda kaynakları güncelleyen bir şeye ihtiyacım var.
E.g. şimdi bazı GLSL gölgelendiricileri geliştiriyorum. Ben aynı anda C++ kod ve GLSL kodunu hem değiştirmek gerekiyor ve ben herşey benim IDE içindecompile
veya run
vurmak her zaman senkronize edilir ihtiyaç
basit bir çözüm olur (ben CMake tarafından oluşturulan proje dosyaları ile codeblocks kullanın) dizin oluşturmak için kaynak dizinden softlink yapmak. Ama bunu manuel olarak yapmak istemiyorum (CMake'i geçmek ve projeyi daha kırılgan hale getirecekti). CMake benim için yapabilir mi? Sadece tamlanışını için
, bunun ne kadar benim bütün size ikili test_SphereShader
için bir bağımlılık dönüşebilir ile
# ==== 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})
sen [bu soruyu] kontrol ettiniz (http://stackoverflow.com/questions/28533760/cmake-only-copies-files-on-reload-not-build)? Her iki cevabı da amacınıza uygun. – Tsyvarev