Сделать файл доступным во время выполнения в CMake и Qt Creator - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь сделать файл ресурсов доступным для исполняемого файла во время выполнения.Я использую следующий 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");

Но ничего не копируется в каталог сборки проекта и даже сообщенияне отображаются в окне вывода * скомпиляции .И сообщение об ошибке, которое я получаю:

Ошибка при открытии файла: нет такого файла или каталога

В чем может быть проблема?

...