CMake:GLFW 作为外部项目
CMake: GLFW as ExternalProject
问题
我正在尝试创建一个使用 GLFW. For this project I am using 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_INSTALL_PREFIX
.
的情况下尝试使用 CMake 构建 GLFW 时,我遇到了同样的错误
尝试的解决方案
为了解决这个问题,我想为 glfw
ExternalProject 指定 CMAKE_INSTALL_PREFIX
选项。但是我不接缝能够做到这一点。我试过:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
添加外部项目后。然而这个接缝没有效果。
问题
如何为 glfw
ExternalProject 设置 CMAKE_INSTALL_PREFIX
?
正如@drescherjm 所提到的,此失败的根源在于 CMake 试图在 C:/Program Files
中创建需要特殊权限的文件。问题是 CMake 默认位于此位置,因为我无法在我的 CMake 文件中设置正确的位置。
附加信息
OS: Windows 8.1 x64
CMake 版本: 3.1.1
Visual Studio 版本:社区 2013 V4.5.53349
CMake File
你需要通过CMAKE_INSTALL_PREFIX argument manually to 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"
)
问题
我正在尝试创建一个使用 GLFW. For this project I am using 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_INSTALL_PREFIX
.
尝试的解决方案
为了解决这个问题,我想为 glfw
ExternalProject 指定 CMAKE_INSTALL_PREFIX
选项。但是我不接缝能够做到这一点。我试过:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
添加外部项目后。然而这个接缝没有效果。
问题
如何为 glfw
ExternalProject 设置 CMAKE_INSTALL_PREFIX
?
正如@drescherjm 所提到的,此失败的根源在于 CMake 试图在 C:/Program Files
中创建需要特殊权限的文件。问题是 CMake 默认位于此位置,因为我无法在我的 CMake 文件中设置正确的位置。
附加信息
OS: Windows 8.1 x64
CMake 版本: 3.1.1
Visual Studio 版本:社区 2013 V4.5.53349
CMake File
你需要通过CMAKE_INSTALL_PREFIX argument manually to 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"
)