Ausgabe
ich ein Projekt zu machen, versuche, die GLFW verwendet. Für dieses Projekt verwende ich als Build-System. Ich möchte es so machen, dass der Benutzer nur mein Projekt mit CMake erstellen muss, und als Teil des Prozesses wird GLFW entsprechend aufgebaut und verlinkt.CMake: GLFW als ExternalProject
Um dies zu tun, ich GLFW als ExternalProject
in meiner CMake Datei bin und fügte hinzu:
EXTERNALPROJECT_ADD(glfw
GIT_REPOSITORY https://github.com/glfw/glfw.git
GIT_TAG 3.1
INSTALL_DIR "${PROJECT_BINARY_DIR}/libs/glfw"
)
Allerdings, wenn ich das Projekt generieren (für VS12 2013 x64) und führen ALL_BUILD
bekomme ich folgende Fehlermeldung:
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
Ich bekomme den gleichen Fehler, wenn ich versuche, GLFW mit CMake ohne Angabe der CMAKE_INSTALL_PREFIX
zu bauen.
Versuchte Lösung
dies zu beheben Ich mag würde die CMAKE_INSTALL_PREFIX
Option für die glfw
ExternalProject angeben. Aber ich nähere das nicht, um das zu tun. Ich habe versucht:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
Nach dem Hinzufügen des ExternalProject. Dies scheint jedoch keine Auswirkungen zu haben.
Frage
Wie stelle ich die CMAKE_INSTALL_PREFIX
für die glfw
ExternalProject?
Wie von @drescherjm erwähnt, liegt der Grund für diesen Fehler darin, dass CMake versucht, Dateien in C:/Program Files
zu erstellen, für die es spezielle Berechtigungen benötigt. Das Problem ist, dass CMake standardmäßig auf diesen Speicherort eingestellt ist, da ich den korrekten Speicherort in meiner CMake-Datei nicht festlegen kann.
Weitere Informationen
OS: Windows 8.1 x64
CMake Version: 3.1.1
Visual Studio Version: Community 2013 V4.5.53349
CMake File
Das Hauptproblem ist UAC verhindert, dass Sie Ordner und Dateien in den Programmdateien erstellen. – drescherjm
@drescherjm Ich weiß. Das Problem ist, dass ich nicht möchte, dass GLFW an diesem Ort installiert wird. Stattdessen möchte ich, dass es in meinem CMake-Projektverzeichnis installiert wird. CMake ist standardmäßig auf diesen Ort in Windows voreingestellt. –
Setzen Sie 'CMAKE_INSTALL_PREFIX' auf etwas anderes als Programme. Ich benutze die set_target_properties nicht, um dies zu tun. Ich benutze set Ändern Sie das Installationspräfix für alle Ziele in meiner CMakeLists.txt – drescherjm