CMake:GLFW作为外部项目
CMake: GLFW as ExternalProject
Issue
我正在尝试制作一个使用 GLFW 的项目。对于这个项目,我使用 CMake 作为构建系统。我想让用户只需使用 CMake 构建我的项目,作为流程的一部分,GLFW 将适当地构建和链接。
为此,我将 GLFW 添加为我的 CMake 文件中的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
时,我收到同样的错误。
尝试的解决方案
为了解决这个问题,我想为glfw
外部项目指定CMAKE_INSTALL_PREFIX
选项。但是,我无法做到这一点。我试过:
SET_TARGET_PROPERTIES(glfw PROPERTIES CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/libs/glfw")
添加外部项目后。然而,这种接缝没有效果。
问题
如何设置glfw
外部项目的CMAKE_INSTALL_PREFIX
?
正如@drescherjm所提到的,此失败的根源是CMake正在尝试在其中创建需要特殊权限的文件C:/Program Files
。问题是 CMake 默认使用此位置,因为我无法在 CMake 文件中设置正确的位置。
附加信息
操作系统: 视窗 8.1 x64
CMake 版本: 3.1.1
Visual Studio 版本: Community 2013 V4.5.53349
CMake 文件
您需要手动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"
)
相关文章:
- 使外部项目可用于find_package CMake
- 链接导入的库与CMAKE外部项目
- 使用 CMake 外部项目为跨平台库依赖项的目标名称
- 如何获取外部项目定义的目标的输出路径?
- cmake:add_depentencies不适用于外部项目
- cmake-包括外部项目的目录
- CMake:重建外部项目
- 如何为 CMAKE 外部项目指定编译器
- 如何将正确的库与 GLFW 链接为 cmake 中的外部项目
- CMAKE:外部项目更新和离线工作
- CMake:包含外部项目的错误
- 如何将 CMake 参数转发到外部项目
- CMake:GLFW作为外部项目
- 使用 cmake 将依赖项传播到仅标头的外部项目
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- 代码使用cmake干净地构建,当作为外部项目添加时失败
- 将cmake构建选项导出到外部项目
- 添加预处理器定义到cmake外部项目
- 为外部项目设置RPATH
- 通过cmake链接openv库作为外部项目