【问题标题】:CMake and Visual Studio with not default installation folder没有默认安装文件夹的 CMake 和 Visual Studio
【发布时间】:2015-07-27 09:50:06
【问题描述】:

我正在尝试使用 CMake 和 VS 2012 构建一些东西。问题是我的 VS 安装在 D:\Pliki programów (x86)\Microsoft Visual Studio 11.0 上。我的 C 盘上没有可用空间。

CMake 无法找到我的 VS。我试图指定 VS 编译器 cl.exe,但无论如何它都要求在同一个文件夹中输入 dll。我还尝试将指定的工具链与 vcvarsall.bat 一起使用。但我不确定我是否做对了这些事情。 我想我需要将 VS 位置添加到 CMake,但是如何?我尝试设置 PATH 但它不起作用。

而且搜索这个问题很困难,所有搜索引擎都认为我想为我要构建的程序更改安装路径。

更新

我添加了variable_watch(CMAKE_MAKE_PROGRAM)

CMakeLists.txt:3(项目)中的 CMake 调试日志: 使用 UNKNOWN_READ_ACCESS 访问变量“CMAKE_MAKE_PROGRAM” 价值 。 CMakeLists.txt:3 处的 CMake 调试日志(项目): 使用带有值的 MODIFIED_ACCESS 访问变量“CMAKE_MAKE_PROGRAM” C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe。 C 编译器标识未知 CXX 编译器标识未知 CMakeLists.txt:3(项目)处的 CMake 错误: 找不到 CMAKE_C_COMPILER。

在输出文件中:

LINK : fatal error LNK1104: cannot open file 'MSVCRTD.lib'

CMake 是否在 VS 11 安装文件夹中寻找库?问题是 VS 安装程序将库放在 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64 中。

【问题讨论】:

  • 一项快速测试表明,CMake 实际上通过MSBuild.exe 在我的PC 上找到了VS。如果我在我的project() 命令之前添加variable_watch(CMAKE_MAKE_PROGRAM),然后调用类似cmake.exe -G "Visual Studio 11" .. 我得到的东西 - 除了对变量的其他访问 - Variable "CMAKE_MAKE_PROGRAM" was accessed using MODIFIED_ACCESS with value"C:/windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe".
  • 我还在不同的目录中安装了 VS2012,它对我有用。 CMake 确实在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSBuild\ToolsVersions\4.0\MSBuildToolsPath 搜索注册表。你能在你的电脑上检查它指向的位置吗?

标签: visual-studio cmake


【解决方案1】:

对于这样的(和类似的)情况,我在源代码树中保留了 VCEnvCmd.bat

call "%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat" amd64 & %*

执行不带参数的.bat 将找到并运行vcvarsall.bat,在当前shell 中为amd64 目标设置环境(您可以根据需要更改或参数化,例如嵌入其中的版本号环境变量)。

不错的技巧是,对于那些 Nightly / Continuous 构建,您可以使用 .bat 作为设置环境的“前缀”,例如在任务管理器中:

VCEnvCmd.bat ctest -S CTestScript.cmake,Nightly

优点是您可以使用 MSVC 已经为您提供的内容(VS...COMNTOOLS 变量),而无需通过对PATH 等的持续更改进一步弄乱您的环境。

【讨论】:

  • 我已更改 %VS110COMNTOOLS% 它指向不存在的 C 驱动器位置。我已经更新了我的原始帖子。
  • @Pepek91:如果运行 vcvarsall.bat 没有正确设置编译环境,那么您的安装就会损坏——要么是你摆弄设置,要么是 MSVC 安装程序不处理非标准优雅的路径。由于我没有触摸 我的 (工作)安装来尝试这个,恐怕我无法进一步帮助你。 ;-)
猜你喜欢
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多