2015-02-03 19 views
5

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

+0

Głównym problemem jest to, że UAC uniemożliwia tworzenie folderów i plików w plikach programu. – drescherjm

+0

@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. –

+0

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

Odpowiedz

3

You trzeba ręcznie przekazać argument CMAKE_INSTALL_PREFIX do ExternalProject_Add. Wypróbuj to:

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" 
) 
+0

Po prostu ciekawy, dlaczego podasz adres URL do tar zamiast adresu git? Czy to jest tak, że użytkownicy mogą budować bez zainstalowanego git? –

+0

@NoahHuppert tak, przetestowałem go teraz na windowsach, nie zawracam sobie głowy lokalizacją git :) –