【发布时间】:2018-03-31 19:54:43
【问题描述】:
我正在尝试了解这里的可视化 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 项也是任务吗?
【问题讨论】:
-
它是一个目标,在 Microsoft.CppCommon.targets 中定义。它所做的最相关的事情是执行 CL 任务。 IDE 也像对 ClInclude 一样关注它,这就是它如何构建在“解决方案资源管理器”窗口中可见的项目树的方式。弄清楚 Microsoft.Cpp.Targets 是如何让这个球滚动起来的,你可能会失去几团头发。
标签: c++ visual-studio visual-c++ msbuild