问题
我正在尝试制作一个使用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
.
尝试的解决方案
为了解决这个问题,我想为ExternalProject指定CMAKE_INSTALL_PREFIX
选项。glfw
但是,我不希望能够做到这一点。我试过了:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
添加外部项目后。然而,这个接缝没有任何效果。
问题
如何CMAKE_INSTALL_PREFIX
为glfw
ExternalProject 设置?
正如@drescherjm 所提到的,此失败的根源是CMake 正在尝试创建C:/Program Files
需要特殊权限的文件。问题是 CMake 默认为这个位置,因为我无法在我的 CMake 文件中设置正确的位置。
附加信息
操作系统:Windows 8.1 x64
CMake 版本:3.1.1
Visual Studio 版本:Community 2013 V4.5.53349
CMake 文件