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
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
@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ổ. –
Đặ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