问题
我正在尝试制作一个使用GLFW的项目。对于这个项目,我使用CMake作为一个构建系统。我想让它,所以用户只需构建我的项目与CMake,作为过程的一部分,GLFW将得到适当的构建和链接。
为此,我将GLFW作为ExternalProject添加到CMake文件中:
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时,也会出现同样的错误。
尝试解决方案
为了解决这个问题,我想为glfw ExternalProject指定glfw选项。不过,我不能接缝做这件事。我试过:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")在添加ExternalProject之后。然而,这种接缝没有任何效果。
问题
如何将CMAKE_INSTALL_PREFIX设置为glfw ExternalProject?
正如@drescherjm所提到的,这个失败的根源是CMake试图在C:/Program Files中创建文件,它需要特殊的权限。问题是CMake默认为这个位置,因为我无法在CMake文件中设置正确的位置。
更多信息
OS:Windows8.1 x64
CMake版本:3.1.1
Visual版本:Community2013V4.5.53349
发布于 2015-02-03 19:26:50
您需要手动将前缀参数传递给添加。试试这个:
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"
)https://stackoverflow.com/questions/28291238
复制相似问题