重要提示:VCTargets中的文件从 Microsoft Visual Studio\?\?\MSBuild\Microsoft\VC 提取,Microsoft拥有其所有权利。
重要提示:本项目还未完工……
本项目基于微软VCTargets修改,为MSBuild实现了跨平台编译vcxproj。相关VS配置高度抽象统一,并与目标编译器功能一比一映射。
举个例子:代码完全优化(Full选项),微软编译器时中映射为
-Ox,而使用GCC时则映射为-O3。
未来开发计划:
- 解决增量编译不生效问题。
- 优化并行生成效率。
- 单元测试。
- Linux
- MacOS(计划)
注意:不支持Windows,因为Windows下微软直接支持。
| 编译器名称 | 对应的平台工具集 |
|---|---|
| GCC | YY_Cross_GCC_1_0 |
| Clang | YY_Cross_Clang_1_0 |
由于这些编译工具将作为平台工具集实现,因此使用时需要给对应的vcxproj配置平台工具集(
PlatformToolset)。
- ARM
- ARM64
- MIPS
- x64(AMD64)
- x86
下载地址:https://dotnet.microsoft.com/zh-cn/download
必须选择 .NET 6.0或者更高版本。
首先,我们从Release产物下载MSBuildCppCrossToolset并解压。
假设最终解压目录是/home/john/Desktop/VCTargets。我们执行下面这条命令:
export VCTargetsPath=/home/john/Desktop/VCTargets/v170/
它将临时添加VCTargetsPath环境变量,如果需要持久配置,请自行修改系统配置。
假设项目位置: /home/john/Desktop/ConsoleApplication2/ConsoleApplication2.vcxproj。并且编译 Release x86,那么可以输入如下命令:
dotnet msbuild '/home/john/Desktop/ConsoleApplication2/ConsoleApplication2.vcxproj' -p:Configuration=Release;Platform=x86
温馨提示:
PlatformToolset必须从 1.2. 兼容的编译器小节中对应的平台工具集中选择,比如说想用GCC就设置YY_Cross_GCC_1_0。
温馨提示:普通用户无需关心如何编译 MSBuildCppCrossToolset。只需要从Release产物中下载即可。
注意:编译MSBuildCppCrossToolset需要安装.NET 6.0 SDK。
假设MSBuildCppCrossToolset项目源代码存放在: D:\MSBuildCppCrossToolset
# 也可以使用 dotnet CLI编译
msbuild D:\MSBuildCppCrossToolset\Build.proj
执行成功后,Release目录就是输出产物。