MouriNaruto / MSBuildCppCrossToolset

[毛利 fork] 基于MSBuild的C++跨平台工具集,可以让Linux也支持编译vcxproj。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于 MSBuildCppCrossToolset - 在Linux、MacOS中编译vcxproj

license downloads contributors release Build

重要提示:VCTargets中的文件从 Microsoft Visual Studio\?\?\MSBuild\Microsoft\VC 提取,Microsoft拥有其所有权利。

重要提示:本项目还未完工……

本项目基于微软VCTargets修改,为MSBuild实现了跨平台编译vcxproj。相关VS配置高度抽象统一,并与目标编译器功能一比一映射。

举个例子:代码完全优化(Full选项),微软编译器时中映射为 -Ox,而使用GCC时则映射为-O3

未来开发计划:

  • 解决增量编译不生效问题。
  • 优化并行生成效率。
  • 单元测试。

1. 兼容性

1.1. 兼容的操作系统

  • Linux
  • MacOS(计划)

注意:不支持Windows,因为Windows下微软直接支持。

1.2. 兼容的编译器

编译器名称 对应的平台工具集
GCC YY_Cross_GCC_1_0
Clang YY_Cross_Clang_1_0

由于这些编译工具将作为平台工具集实现,因此使用时需要给对应的vcxproj配置平台工具集(PlatformToolset)。

1.3. 兼容的平台

  • ARM
  • ARM64
  • MIPS
  • x64(AMD64)
  • x86

2. 使用方式

2.1. 安装 .NET SDK

下载地址:https://dotnet.microsoft.com/zh-cn/download

必须选择 .NET 6.0或者更高版本。

2.2. 配置 MSBuildCppCrossToolset

首先,我们从Release产物下载MSBuildCppCrossToolset并解压。

假设最终解压目录是/home/john/Desktop/VCTargets。我们执行下面这条命令:

export VCTargetsPath=/home/john/Desktop/VCTargets/v170/

它将临时添加VCTargetsPath环境变量,如果需要持久配置,请自行修改系统配置。

2.3. 编译vcxproj项目

假设项目位置: /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

3. 我怎么自己编译 MSBuildCppCrossToolset?

温馨提示:普通用户无需关心如何编译 MSBuildCppCrossToolset。只需要从Release产物中下载即可。

注意:编译MSBuildCppCrossToolset需要安装.NET 6.0 SDK

假设MSBuildCppCrossToolset项目源代码存放在: D:\MSBuildCppCrossToolset

# 也可以使用 dotnet CLI编译
msbuild D:\MSBuildCppCrossToolset\Build.proj

执行成功后,Release目录就是输出产物。

About

[毛利 fork] 基于MSBuild的C++跨平台工具集,可以让Linux也支持编译vcxproj。

License:MIT License


Languages

Language:C# 100.0%