独立使用msbuild编译C++的solution

本文解决在未安装Visual Studio环境下使用MSBuild进行项目编译的问题,包括配置文件缺失、编译器找不到及头文件路径错误等常见问题。

开始打算在测试机上不安装VS,只用msbuild编译,但遇到了一些问题。

 

1. 开始下载MS 的buildtool_full,但是这个下载包是不包含配置文件的。solution里涉及的配置文件都找不到。总报Microsoft.Cpp里的配置文件找不到。

 

复制了另一台装了VS的机器的Microsoft.Cpp过去,配置文件就可以找到了。

如果因为路径问题找不到,可以在msbuild的命令行里加上

/p:VCTargetsPath="C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140"

2. 找不到CL.exe和link.exe

 

复制过来这两个EXE也不行。重新查了下,发现MS发布了包含库和必要头文件的build 工具包Microsoft Visual C++ Build Tools 2015。下载。如果路径问题还是找不到,可以在msbuild的命令行里加上

/p:CLToolPath="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64"
/p:LinkToolPath="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64" 

3. 项目中引用的头文件stdio.h等找不到。

 

刚下的C++工具包里也没有。。。工具包安装的头文件都在

/p:VC_IncludePath="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include"

 查了下,发现stdio.h等文件都被移到C:\Program Files (x86)\Windows Kits\10\Include里了。没办法,还是要从安装了VS的机器上把这个include目录都拷过来。

 

4. 可能之前装vs12的原因,编译的版本不一致问题。

 

/p:VisualStudioVersion=14.0 /t:Rebuild

 

终于,2015的solution可以在没有安装VS14的机器上编译了。。。

<think>我们正在讨论的是CMake Tools for Windows是否属于C++编译工具。 首先,需要明确几个概念: 1. CMake本身不是一个编译工具,而是一个构建系统生成器(build system generator)。它根据CMakeLists.txt文件生成特定平台的构建文件(如Makefile for Linux, Visual Studio Solution for Windows等)。 2. 编译工具(Compiler)是将源代码转换为目标代码(机器代码)的工具,例如GCC、Clang、MSVC等。 在Windows平台上,CMake Tools通常指的是: - CMake官方提供的Windows安装包(包含cmake.exe命令行工具) - 或者Visual Studio中提供的“适用于Windows的C++ CMake工具”组件(引用[1]提到) - 或者VSCode中的CMake Tools扩展(引用[1][3][4]提到) 这些工具的作用是帮助用户配置、生成和构建CMake项目,但并不直接编译代码。编译工作仍然需要依赖底层的编译器(如MSVC、MinGW-w64等)。 因此,我们可以得出结论: **CMake Tools for Windows不是C++编译工具,而是构建配置工具。** 具体而言: - 当你使用CMake配置项目时(例如执行`cmake -B build -G "MinGW Makefiles"`),CMake会根据指定的生成器(Generator)产生构建文件(如Makefile)。 - 然后,当你构建项目时(例如执行`cmake --build build`),CMake会调用底层的编译工具链(如MinGW的g++.exe)来编译代码。 所以,在Windows上使用CMake进行C++开发,你需要: 1. 安装CMake(必须) 2. 安装一个编译器(如MinGW-w64或MSVC)(必须) 3. 可选:安装VSCode的CMake Tools扩展来增强开发体验(图形化操作) 引用内容支持: - 引用[1]提到:在Windows上配置CMAKE需要安装CMake Tools插件(VSCode)以及配置CMakeLists.txt。 - 引用[2]展示了在Windows上使用CMake生成Visual Studio解决方案(.sln)然后使用msbuild编译的过程,说明CMake需要配合编译使用。 - 引用[4]提到环境条件需要安装MinGW64(编译器)和CMake(构建工具)并配置环境变量。 因此,回答用户问题:CMake Tools for Windows不是C++编译工具,而是构建工具,它需要配合编译使用。 接下来,按照要求生成相关问题。 </think>CMake Tools for Windows **不是C++编译工具**,而是一个构建系统生成器和管理工具。以下是关键区分: ### 核心区别 1. **CMake的定位** - CMake是**跨平台构建系统生成器**,用于管理编译过程,但**不直接编译代码**[^1][^4] - 实际编译工作由底层编译器完成(如MinGW/GCC或MSVC) - 工作流程: $$ \text{CMakeLists.txt} \xrightarrow{\text{CMake生成}} \text{构建文件} \xrightarrow{\text{编译器}} \text{可执行文件} $$ 2. **编译工具链构成** | 组件 | 作用 | 示例 | |---|---|--| | **构建系统** | 生成编译指令 | CMake[^3] | | **编译器** | 源代码→机器码 | MinGW-w64/g++[^4], MSVC | | **构建器** | 执行编译指令 | GNU Make, Ninja | 3. **典型工作流**(Windows示例) ```bash cmake -B build -G "MinGW Makefiles" # CMake生成Makefile[^2] cmake --build build # 调用MinGW执行实际编译[^4] ``` ### 工具协作关系 ```mermaid graph LR A[CMakeLists.txt] --> B(CMake Tools) B --> C{生成构建系统} C --> D[Makefile/MSBuild项目] D --> E[编译器 g++/cl.exe] E --> F[可执行文件] ``` - 图中显示CMake只是**流程中介**,编译最终由`g++`或`cl.exe`完成[^2][^4] ### 补充说明 - 在Windows上完整开发环境需要: 1. **CMake**(构建管理) 2. **编译器**(MinGW或MSVC) 3. **构建工具**(Make或Ninja) 4. *可选* IDE支持(VSCode CMake Tools插件[^1][^5])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值