Использование задачи CL MSBuild не создает исполняемый файл - PullRequest
1 голос
/ 21 октября 2011

Я пытаюсь создать C-программу "Hello World", используя задачу CL MSBuild следующим образом:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <UsingTask TaskName="CL" AssemblyFile="%ASSEMBLYDLL%" />
  <ItemGroup>
    <Compile Include="main.c" />
  </ItemGroup>
  <Target Name="Build">
    <CL Sources="@(Compile)" />
  </Target>
</Project>

Это создает main.obj путем вызова cl.exe /c main.cно Я хочу создать main.exe.Если я вызываю cl.exe main.c в командной строке, это, конечно, работает.Однако Я хочу знать, как управлять этим через MSBuild .Я не смог найти информацию об этом на соответствующей справочной странице в MSDN .

1 Ответ

1 голос
/ 21 октября 2011

Я упустил из виду, что вызов cl.exe main.c фактически вызывает cl.exe main.c && link.exe main.obj, создавая main.exe.Следующее работает как ожидалось.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <UsingTask TaskName="CL" AssemblyFile="%ASSEMBLYDLL%" />
  <UsingTask TaskName="Link" AssemblyFile="%ASSEMBLYDLL%" />
  <ItemGroup>
    <Compile Include="main.c" />
  </ItemGroup>
  <Target Name="Build">
    <CL Sources="@(Compile)" />
    <Link Sources="@(Compile -> '%(Filename).obj')" />
  </Target>
</Project>
...