我正在尝试制作一个使用GLFW的项目。对于这个项目,我使用CMake作为构建系统。我想这样做,因此用户只需要使用CMake构建我的项目,并且作为流程的一部分,GLFW将被适当地构建和链接。
为此,我在我的CMake文件中将GLFW添加为ExternalProject
:
EXTERNALPROJECT_ADD(glfw
GIT_REPOSITORY https://github.com/glfw/glfw.git
GIT_TAG 3.1
INSTALL_DIR "${PROJECT_BINARY_DIR}/libs/glfw"
)
但是当我生成项目时(对于VS12 2013 x64)并运行ALL_BUILD
,我收到以下错误:
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
当我尝试使用CMake构建GLFW而未指定CMAKE_INSTALL_PREFIX
时出现相同的错误。
要解决此问题,我想为CMAKE_INSTALL_PREFIX
ExternalProject指定glfw
选项。但是,我不接缝能够做到这一点。我试过了:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
添加ExternalProject后。然而,这种接缝没有任何效果。
如何为CMAKE_INSTALL_PREFIX
ExternalProject设置glfw
?
正如@drescherjm所提到的,这次失败的根源在于CMake正在尝试在C:/Program Files
中创建需要特殊权限的文件。问题是CMake默认为此位置,因为我无法在我的CMake文件中设置正确的位置。
操作系统:Windows 8.1 x64
CMake版本:3.1.1
Visual Studio版本:社区2013 V4.5.53349
的 CMake File
答案 0 :(得分:4)
您需要手动将CMAKE_INSTALL_PREFIX参数传递给ExternalProject_Add。试试这个:
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"
)