Я пытаюсь сделать файл ресурсов доступным для исполняемого файла во время выполнения.Я использую следующий CMakeLists.txt.
cmake_minimum_required(VERSION 2.8)
project(open-gl-test)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
find_package(glfw3 REQUIRED)
add_executable(${PROJECT_NAME} "main.c")
message(Executable is set!)
target_link_libraries(${PROJECT_NAME} ${GLEW_LIBRARIES} ${OPENGL_gl_LIBRARY} glfw)
# List of files for which we add a copy rule.
set(data_SHADOW "basic.shader")
# We don't want to copy if we're building in the sourse dir.
if (NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
message(WARNING "Directories are not equal")
foreach(item IN LISTS data_SHADOW)
message(STATUS ${item})
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/res/shaders/${item}"
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/res/shaders/${item}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/res/shaders/${item}"
)
endforeach()
else()
message(WARNING "Directories are equal")
endif()
# Files are only copied if a target depends on them.
add_custom_target(data-target ALL DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/res/shaders/${data_SHADOW}")
И вот как я получаю доступ к файлу.
struct ShaderProgramSource source = parseShader("res/shaders/basic.shader");
Но ничего не копируется в каталог сборки проекта и даже сообщенияне отображаются в окне вывода * скомпиляции .И сообщение об ошибке, которое я получаю:
Ошибка при открытии файла: нет такого файла или каталога
В чем может быть проблема?