c++ - CMake:GLFW 作为外部项目

标签 c++ visual-c++ cmake glfw external-project

问题

我正在尝试创建一个使用 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_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 文件中设置正确的位置。

附加信息

操作系统:Windows 8.1 x64
CMake版本:3.1.1
Visual Studio 版本:Community 2013 V4.5.53349
<强> CMake File

最佳答案

您需要通过 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"
)

关于c++ - CMake:GLFW 作为外部项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28291238/

相关文章:

c++ - 如何使用 cmake 使用不同的编译器构建多个可执行文件?

c++ - Boost cmake 组件索引

c++ - C++ 字符串文字转义字符的规则

c++ - 类构造函数问题

c++ - 多个函数需要相同的参数(如何优化),

c++ - friend 模板参数相关查找

OpenCV 窗口无法加载

c# - c# 中的 Microsoft Visual C++ 运行时库异常

c++ - 定义遍历函数的 const 和非常量版本

qt - CMake - 将 DLL 复制到运行时输出目录