使用MSBuild编译单个cpp文件

Yar*_*riv 9 msbuild visual-studio-2008

我可以通过从命令行调用MSBuild来构建整个项目:

C:\MyProject>MSBuild MyProject.vcproj
Run Code Online (Sandbox Code Playgroud)

但是我没有找到有关编译单个文件的任何信息.本质上我想做点什么

C:\MyProject>MSBuild MyProject.vcproj /t:Compile:MySourceFile.cpp
Run Code Online (Sandbox Code Playgroud)

我不想直接从命令行使用'cl.exe',因为这会迫使我为cl.exe和所有环境变量定义所有相关的命令行选项,这是MSBuild已经为我做的任务.

有没有办法实现这一目标?

请不要建议使用'make'或'ant'等等,我特别需要MSBuild.谢谢

sti*_*ijn 8

VS2008中的MSBuild使用VCBuild来完成实际工作,而VCBuild没有我知道构建单个文件的选项.(VS2010已经改变了,你实际上可以用类似的东西来调用单个文件的编译"/t:ClCompile "p:/SelectedFiles="main.cpp")

我可以提出一些肯定会有用的想法,但需要一些额外的工作并且不是很简单:

  • 你可以让msbuild调用devenv来编译一个文件:

    devenv myproject.sln /Command "File.OpenFile myfile.cpp" /Command "Build.Compile" /Command "File.Exit"
    
    Run Code Online (Sandbox Code Playgroud)

    这确实打开了IDE窗口,并且很难弄清楚编译是否实际成功.

  • 让msbuild调用一个脚本/程序来解析vcproj,并删除源文件部分下所有源的副本,但要编译的文件除外.然后让msbuild使用vcbuild/pass1构建该项目(pass1 =仅编译,没有链接).

  • 始终保持响应文件具有与vcproj相同的选项,并让msbuild使用响应文件调用cl来编译单个文件.(使响应文件像在VS中打开项目属性一样简单,转到C++ - > CommandLine并复制列出的所有内容)