掌握使用Ninja替代MSBuild在Windows上执行CMake构建
本文将介绍在Windows环境下,如何使用Ninja替代MSBuild来执行CMake构建的基本方法,不涉及构建效率的对比分析。
CMake在执行构建时,调用MSBuild来执行编译,而当调用Ninja时,则会调用clang、gcc或cl.exe。Ninja与MSBuild在CMake构建流程中扮演着不同的角色,它们之间形成了一种间接关系。
在Windows系统中,MSBuild作为CMake的一个生成器,用户可以通过指定生成器参数-cmake -G "Visual Studio 17 2022" -A x64来生成Visual Studio的工程文件(如.xxx.sln)。这里的“Visual Studio 2022”实际上指的是VS2022安装目录下名为msbuild.exe的可执行文件。
在配置过程中,CMake会生成日志文件CMakeConfigureLog.yaml,在其中记录了用于执行构建的msbuild.exe路径。例如,在我的日志文件中,msbuild.exe路径为"C:/Program Files/Microsoft Visual Studio/2022/Community/MSBuild/Current/Bin/amd64/MSBuild.exe"。
此外,msbuild是一个用C#编写的工具,其源代码开源在github上。对C/C++开发者而言,安装Visual Studio后会自动包含msbuild,无需单独安装。
要实现CMake+Ninja在Windows上的C/C++工程构建,可以采用命令行方式。通过执行特定脚本,如build/vs2022-x64-ninja.cmd,构建过程将不生成.sln或.vcxproj文件。
在Visual Studio中集成Ninja构建,自2016年VS2017某个版本开始支持。用户只需在VS2022中打开包含CMakeLists.txt的目录,即可进行代码编写、构建和查看目标列表。
总结而言,本文提供了在基于CMake构建的工程中,从使用MSBuild到使用Ninja作为生成器的基本方法。无论是命令行方式还是使用Visual Studio编辑代码,触发构建或查看目标列表,都可以实现这一转换。
参考文献:待补充
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。