使用XBuild编译Visual C++项目时如何定义目标?

3

我有一个Visual C++项目,输出一个库,我想使用xmake在Linux上构建它。我可以在Monodevelop中构建它,但我希望能够从命令行构建它。

如果我尝试使用"xbuild"命令构建该项目,则会出现以下错误:

....ItemMinerLibMono.cproj: error : Target named 'Build' not found in the project.

据文档介绍,我需要在csproj文件中添加一个名为"Build"的Target,但我不知道如何操作。我尝试使用以下方式导入Microsoft.Common.targets文件:

<Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" />

但是我收到了错误信息:
: error : Target 'CreateManifestResourceNames', a dependency of target 'PrepareResources', not found.

有人知道如何在命令行成功编译C++项目吗?

谢谢, Gregor

2个回答

2
将以下内容添加到您的MonoDevelop .cproj文件中,它将使用xbuild构建。
<Target Name="Build" DependsOnTargets="$(BuildDependsOn)" Outputs="$(TargetPath)"/>

可能有更简单的解决方案,但到目前为止我还没有想出来。


1

您需要导入Cpp目标。

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

在一个安装了完整的Visual Studio的Windows机器上,这些文件可以在以下位置找到。我没有在任何版本的Linux下使用xbuild进行测试:

VS2012: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v110
VS2013: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
VS2015: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140


感谢您的回答。不幸的是,如果我添加这些文件,我会遇到“找不到项目文件”的错误。我是否可能没有完整的Mono安装?再次感谢您帮助我解决这个问题... - Gregor Leban
1
我甚至不确定Mono是否已经安装了它们。或者说,C++编译器是否已经安装了。 - skolima

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接