CMake: GLFW в качестве внешнего проекта

вопрос

Я пытаюсь сделать проект, который использует GLFW. Для этого проекта я использую CMake в качестве системы сборки. Я хотел бы сделать так, чтобы пользователь просто собирал мой проект с помощью CMake, и как часть процесса GLFW будет построен и связан соответствующим образом.

Для этого я добавляю GLFW как ExternalProject в моем файле CMake:

EXTERNALPROJECT_ADD(glfw
    GIT_REPOSITORY https://github.com/glfw/glfw.git
    GIT_TAG 3.1
    INSTALL_DIR "${PROJECT_BINARY_DIR}/libs/glfw"
)

Однако, когда я генерирую проект (для VS12 2013 x64) и запускаю ALL_BUILD Я получаю следующую ошибку:

2>    CMake Error at cmake_install.cmake:31 (file):
2>      file INSTALL cannot make directory "C:/Program Files/GLFW/include/GLFW": No
2>      such file or directory

Я получаю ту же ошибку при попытке собрать GLFW с CMake без указания CMAKE_INSTALL_PREFIX,

Попытка решения

Чтобы исправить это, я хотел бы указать CMAKE_INSTALL_PREFIX вариант для glfw ExternalProject. Однако я не шва, чтобы быть в состоянии сделать это. Я пытался:

SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")

После добавления ExternalProject. Однако это швы, чтобы не иметь никакого эффекта.

Вопрос

Как мне установить CMAKE_INSTALL_PREFIX для glfw ExternalProject?

Как упоминалось @drescherjm, корень этой ошибки в том, что CMake пытается создать файлы в C:/Program Files для чего нужны особые разрешения. Проблема в том, что CMake по умолчанию использует это местоположение, потому что я не могу установить правильное местоположение в моем файле CMake.

Дополнительная информация

ОС: Windows 8.1 x64
Версия CMake: 3.1.1
Версия Visual Studio: Community 2013 V4.5.53349
CMake файл

1 ответ

Решение

Вам необходимо передать аргумент CMAKE_INSTALL_PREFIX вручную в ExternalProject_Add. Попробуй это:

cmake_minimum_required(VERSION 2.8)
project(Foo)

include(ExternalProject)

ExternalProject_Add(
    GLFW
    URL "https://github.com/glfw/glfw/archive/3.1.tar.gz"
    URL_HASH SHA1=fe17a0610a239311a726ecabcd2dbd669fb24ca8
    CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/_my_install"
)
Другие вопросы по тегам