Emisji
Próbuję zrobić projekt, który wykorzystuje GLFW. Dla tego projektu używam CMake jako systemu kompilacji. Chciałbym sprawić, aby użytkownik właśnie musiał zbudować mój projekt za pomocą CMake, a jako część procesu GLFW zostanie odpowiednio zbudowany i połączony.CUpewnij: GLFW jak ExternalProject
Do tego dodaję GLFW jako ExternalProject
w moim pliku CMake zrobić:
EXTERNALPROJECT_ADD(glfw
GIT_REPOSITORY https://github.com/glfw/glfw.git
GIT_TAG 3.1
INSTALL_DIR "${PROJECT_BINARY_DIR}/libs/glfw"
)
jednak kiedy wygenerować projektu (VS12 2013 x64) i uruchomić ALL_BUILD
pojawia się następujący błąd:
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
Otrzymuję ten sam błąd, gdy próbuję zbudować GLFW z CMake bez określania CMAKE_INSTALL_PREFIX
.
Próba rozwiązania
Do tego chciałbym określić opcję CMAKE_INSTALL_PREFIX
dla glfw
ExternalProject naprawić. Jednak nie szew, aby móc to zrobić. Próbowałem:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
Po dodaniu zewnętrznego projektu. Jednak te szwy nie mają wpływu.
Pytanie
Jak mogę ustawić CMAKE_INSTALL_PREFIX
dla glfw
ExternalProject?
Jak wspomniano przez @drescherjm, źródłem tego niepowodzenia jest to, że CMake próbuje utworzyć pliki w postaci C:/Program Files
, do której potrzebuje specjalnych uprawnień. Problem polega na tym, że CMake domyślnie przyjmuje tę lokalizację, ponieważ nie jestem w stanie ustawić poprawnej lokalizacji w moim pliku CMake.
Dodatkowe informacje
OS: Windows 8.1 x64
CUpewnij Wersja: 3.1.1
Visual Studio Version: Community 2013 V4.5.53349
CMake File
Głównym problemem jest to, że UAC uniemożliwia tworzenie folderów i plików w plikach programu. – drescherjm
@drescherjm Wiem. Problem polega na tym, że nie chcę, aby GLFW instalował się w tej lokalizacji. Zamiast tego chcę go zainstalować w moim katalogu projektu CMake. CMake domyślnie przyjmuje tę lokalizację w oknach. –
Ustaw "CMAKE_INSTALL_PREFIX" na coś innego niż Program Files. Nie używam zestawu set_target_properties do tego celu Używam zestawu zmień prefiks instalacji dla wszystkich obiektów docelowych w moim CMakeLists.txt – drescherjm