CMake 错误无法运行 MSBuild 命令
Posted
技术标签:
【中文标题】CMake 错误无法运行 MSBuild 命令【英文标题】:CMake Error Failed to run MSBuild command 【发布时间】:2021-04-13 15:29:55 【问题描述】:我对 CMake 非常陌生,并尝试在已安装 Visual Studio 17 和 19 的 Windows 上构建一个最小的 CMake 文件。C++ 代码是最低限度的 main.cpp:
#include<iostream>
int main()
std::cout << "Hello" << std::endl;
return 0;
CMakeLists.txt文件也是最小的:
cmake_minimum_required(VERSION 3.1)
project(hello)
add_executable($PROJECT_NAME main.cpp)
当我在命令行上运行 CMake 时,我得到了这个错误,我不知道如何解决它:
C:\SampleProject\build>cmake ./../src
-- Building for: Visual Studio 15 2017
CMake Error at CMakeLists.txt:3 (project):
Failed to run MSBuild command:
MSBuild.exe
to get the value of VCTargetsPath:
The system cannot find the file specified
【问题讨论】:
键入 msbuild.exe 而不是键入cmake ./../src
会给您一个“msbuild.exe 未被识别为内部或外部命令”
您必须从“x64 Native Tools Command Prompt for VS 2019”运行cmake
(这是 Visual Studio 在开始菜单中安装的快捷方式)。也可以试试 Ninja,它使用 CMake 比使用 MSBuild 更容易。
感谢您的回答。我无法在命令行上运行 MSBuild,当我为 VS 2017 运行 x64 本机工具时,它工作了!
我几乎总是从 Visual Studio 命令提示符运行 CMake,并设置路径和环境变量。虽然对我来说,这部分是由于安装了多个编译器和工作环境的多个构建树。
【参考方案1】:
默认情况下,VC++ 工具不在 PATH 中,它们由 vcvarsall.bat
脚本添加到 PATH。
从“x64 Native Tools Command Prompt for VS 2019”运行 cmake
(这是 Visual Studio 安装在“开始”菜单中的 vcvarsall.bat
的快捷方式) .
注意事项:
如果不使用 Visual Studio 集成,您可能需要考虑将Ninja 作为 MSBuild 的替代构建系统。它对 CMake 更友好,因为它不需要配置的 Debug/Release 双重性(这是使用 CMake 时令人头疼的根源)。
-
下载ninja.exe,添加到PATH
使用 Ninja CMake 生成器:
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ..
使用ninja
命令享受轻松快速的构建。
要构建发布版本,请使用 -DCMAKE_BUILD_TYPE=Release
重新运行 cmake(因此这与在其他平台上的工作方式非常相似,例如 Linux)。
Ninja 还与 VSCode CMake extension 很好地集成(注意:VSCode != VS)。
【讨论】:
以上是关于CMake 错误无法运行 MSBuild 命令的主要内容,如果未能解决你的问题,请参考以下文章
为啥 CruiseControl.NET 无法构建,但使用命令行中的 msbuild.exe 有效?
VS 2017 - 带有版本信息(资源)的 C++ DLL 的 MSBuild 不起作用(致命错误 LNK1158:无法运行“cvtres.exe”)
CMake 错误:catkin_make :::Running 命令运行命令:“/ws/build”中的“make -j4 -l4”