gpt4 book ai didi

c++ - CMake : softlink resource ( such as GLSL shaders ) or copy each complilation

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:27 24 4
gpt4 key购买 nike

使用 CMake 将资源从源目录复制到构建目录的最简单方法是

file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )

但是,这仅当我调用cmake 时才会更新构建目录中的资源。我需要每次调用 make 来更新资源。

例如现在我开发了一些 GLSL 着色器。我需要同时更改 C++ 代码和 GLSL 代码,并且我需要在我的 IDE 中每次点击 compilerun 时一切都同步(我将 CodeBlocks 与 CMake 生成的项目文件一起使用)

简单的解决方案是使从源目录到构建目录的软链接(soft link)。但我不想手动完成(这会绕过 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} )

最佳答案

您可以提供一个自定义目标,将其转换为二进制 test_SphereShader 的依赖项:

ADD_CUSTOM_TARGET(
copy_shader_files
${CMAKE_COMMAND}
-D SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
-D DESTINATION_DIR=${CMAKE_CURRENT_BINARY_DIR}
-P CopyFile.cmake
COMMENT "Copying Files for target: test_SphereShader" VERBATIM
)

ADD_DEPENDENCIES ( test_SphereShader copy_shader_files )

使用自定义目标调用带有脚本文件 CopyFile.cmake 的新 CMake 实例,其中包含您的复制命令:

file( COPY ${CMAKE_CURRENT_SOURCE_DIR}/shaders DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )

这样,每次调用 makemake test_SphereShader 时都会复制文件。您甚至可以通过调用 make copy_shader_files 手动复制。

关于c++ - CMake : softlink resource ( such as GLSL shaders ) or copy each complilation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com