【问题标题】:CMake CMAKE_INSTALL_PREFIX completely ignoredCMake CMAKE_INSTALL_PREFIX 完全被忽略
【发布时间】:2021-10-12 14:33:11
【问题描述】:

我正在尝试根据this guide(官方原型指南)在我的 Windows 机器上构建 protobuf。编译工作正常。但。我想将它安装在我的工作区中,其他项目可以轻松访问它。根据指南,我应该像这样指定安装前缀:

 C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^
 -DCMAKE_BUILD_TYPE=Release ^
 -DCMAKE_INSTALL_PREFIX=../../../../install ^
 ../..

这不会产生预期的效果,因为最终结果安装在 C:\ 中。 另外,如果我使用环境变量:

 $Env:CMAKE_INSTALL_PREFIX="C:/Users/uname/Workspace/protobuf-3.18.0/install"
 cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..\..

或者

 $Env:CMAKE_INSTALL_PREFIX="C:\Users\uname\Workspace\protobuf-3.18.0\install"
 cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..\..

我得到的结果略有不同。它尝试安装在:

C:\Program files (x86)\Protobuf\lib

而且由于缺乏特权,当然会失败。是否可以在 powershell 中安排 env 以使 cmake 实际上获取 我 想要的安装前缀 em>?

【问题讨论】:

  • CMake has never honored CMAKE_INSTALL_PREFIX 作为环境变量。
  • 使用CMAKE_INSTALL_PREFIX 的绝对路径,除非你喜欢惊喜

标签: windows powershell cmake


【解决方案1】:

您必须将CMAKE_INSTALL_PREFIX 指定为缓存变量,而不是环境变量,并且您应该始终使用绝对路径,而不是比相对的。

C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^
  -DCMAKE_BUILD_TYPE=Release ^
  "-DCMAKE_INSTALL_PREFIX=C:/Users/uname/Workspace/protobuf-3.18.0/install" ^
  ../..

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 2022-06-15
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多