问题
我正在尝试制作一个使用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_INSTALL_PREFIX
的情况下使用CMake构建GLFW,会出现相同的错误。
尝试的解决方案
为了解决这个问题,我想为glfw
ExternalProject指定CMAKE_INSTALL_PREFIX
选项。但是我似乎无法做到这一点。我已经尝试过:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
在添加了ExternalProject之后,但是似乎没有任何效果。
问题:
如何为glfw ExternalProject设置CMAKE_INSTALL_PREFIX?
正如@drescherjm所提到的,这个失败的根源在于CMake试图在“C:/Program Files”中创建文件,这需要特殊权限。问题在于CMake默认使用此位置,因为我无法在我的CMake文件中设置正确的位置。
附加信息:
操作系统:Windows 8.1 x64 CMake版本:3.1.1 Visual Studio版本:Community 2013 V4.5.53349 CMake文件