我试图在这里了解可视cpp项目文档(https://docs.microsoft.com/en-us/cpp/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project)。
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />
<PropertyGroup>
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ItemGroup>
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="main.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />
</Project>
我收集到ClCompile是一个项,因为它嵌套在ItemGroup标记下,似乎还可以在ClCompile标记中引用要编译的文件。在Items的文档页面https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-items上,它声明Items是构建系统的输入。我没有看到上面的任务需要这些ClCompile项并将其编译,如何实现编译? ClCompile项也作为任务吗?
最佳答案
在以下路径下搜索.targets
文件夹中的所有.props
和VCTargets
文件后:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets
我们可以在
Microsoft.CppCommon.targets
文件中找到以下代码片段: <Target Name="ClCompile"
Condition="'@(ClCompile)' != ''"
DependsOnTargets="SelectClCompile">
<PropertyGroup>
<CLToolArchitecture Condition="'$(CLToolArchitecture)' == ''">$(VCToolArchitecture)</CLToolArchitecture>
<CLDeleteOutputOnExecute Condition="'$(CLDeleteOutputOnExecute)' == ''">true</CLDeleteOutputOnExecute>
</PropertyGroup>
<ItemGroup>
<ClNoDependencies Condition="'@(ClNoDependencies)' == '' and '%(ClInclude.NoDependency)' == 'true'" Include="@(ClInclude)"/>
<ClNoDependencies Condition="'$(NoDependencies)' != ''" Include="$(NoDependencies)" />
</ItemGroup>
...
<OnError Condition="'$(OnXamlPreCompileErrorTarget)' != ''" ExecuteTargets="$(OnXamlPreCompileErrorTarget)" />
</Target>
因此
ClCompile
应该是一个目标,用于执行Visual C++编译器工具cl.exe
来编译C / C++源文件。这就是为什么不在MSBuild项中的原因。有关更多详细信息,请参见MSBuild (Visual C++) Overview。
关于c++ - ClCompile项目也是一项任务吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49591809/