2015-02-03 13 views
5

Số phát hành

Tôi đang cố gắng thực hiện một dự án sử dụng GLFW. Đối với dự án này, tôi đang sử dụng CMake làm hệ thống xây dựng. Tôi muốn làm cho nó để người dùng chỉ cần có để xây dựng dự án của tôi với CMake, và như là một phần của quá trình GLFW sẽ được xây dựng và liên kết một cách thích hợp.CMake: GLFW là ExternalProject

Để làm điều này tôi thêm GLFW như một ExternalProject trong tập tin CMake tôi:

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

Tuy nhiên khi tôi tạo ra các dự án (Đối với VS12 2013 x64) và chạy ALL_BUILD tôi nhận được lỗi sau:

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 

Tôi gặp lỗi tương tự khi cố gắng xây dựng GLFW với CMake mà không chỉ định CMAKE_INSTALL_PREFIX.

Đã cố gắng giải pháp

Để khắc phục điều này tôi muốn xác định tùy chọn CMAKE_INSTALL_PREFIX cho glfw ExternalProject. Tuy nhiên tôi không có đường may để có thể làm điều này. Tôi đã thử:

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

Sau khi thêm ExternalProject. Tuy nhiên các đường nối này không có hiệu lực.

Câu hỏi

Làm thế nào để thiết lập các CMAKE_INSTALL_PREFIX cho glfw ExternalProject?

Như đã đề cập bởi @drescherjm gốc của sự thất bại này là CMake đang cố gắng tạo tệp trong C:/Program Files mà nó cần quyền truy cập đặc biệt. Vấn đề là CMake đang mặc định vị trí này vì tôi không thể đặt đúng vị trí trong tệp CMake của tôi.

Thông tin bổ sung

OS: Windows 8.1 x64
CMake Version: 3.1.1
Visual Studio Version: Cộng đồng 2013 V4.5.53349
CMake File

+0

Vấn đề chính là UAC đang ngăn bạn tạo thư mục và tệp trong Tệp chương trình. – drescherjm

+0

@drescherjm Tôi biết. Vấn đề là tôi không muốn GLFW cài đặt ở vị trí đó. Thay vào đó, tôi muốn nó cài đặt trong thư mục dự án CMake của tôi. CMake chỉ mặc định vị trí đó trên cửa sổ. –

+0

Đặt 'CMAKE_INSTALL_PREFIX' thành một tệp khác ngoài Program Files. Tôi không sử dụng set_target_properties để làm điều này tôi sử dụng thay đổi thiết lập tiền tố cài đặt cho tất cả các mục tiêu trong CMakeLists.txt của tôi – drescherjm

Trả lời

3

Bạn cần phải chuyển đối số CMAKE_INSTALL_PREFIX theo cách thủ công đến ExternalProject_Add. Hãy thử cách này:

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

Chỉ cần tò mò, tại sao bạn chỉ định một URL đến một tar thay vì một git url? Là nó để người dùng có thể xây dựng mà không cần phải cài đặt git? –

+0

@NoahHuppert vâng, tôi đã thử nghiệm nó trên cửa sổ ngay bây giờ, sẽ không bận tâm với vị trí git :) –

Các vấn đề liên quan