CMake CMAKE_INSTALL_PREFIX 完全忽略

CMake CMAKE_INSTALL_PREFIX completely ignored

我正在尝试根据 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 实际上选择安装前缀 that I想要?

您必须将 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" ^
  ../..