Visual Studio C ++是否可以在没有链接的情况下编译对象

时间:2012-07-05 15:44:56

标签: c++ visual-studio-2010 linker

我正在运行VS 2010 SP1,我有一个特殊的分析配置,每周运行一次(因为构建服务器需要很长时间来分析所有内容)。

我希望这个配置能够在不费力链接的情况下运行。如果分析传递了项目中的所有代码,那么我希望构建只是继续到下一个项目而不进行链接。

我看不出告诉VS只是在没有链接的情况下运行C ++编译器的方法。有没有人知道在现有的vcxproj中执行此操作的方法?

[编辑]澄清:我希望在IDE中工作。

我的下一步行动是手动编辑vcxproj,看看我是否无法摆脱构建的链接阶段。

4 个答案:

答案 0 :(得分:4)

C ++编译器cl.exe当然可以,那就是/c开关(仅编译,不链接)。但不确定IDE使用的msbuild系统以及适用于.vcxproj文件的系统。

根据the documentation,这应该有效:

msbuild /target:Compile projectfile

msbuild /target:projectname:Compile solutionfile

您可能还对/filelogger/fileloggerparameters选项感兴趣,这些选项可让您捕获构建消息。

答案 1 :(得分:2)

就在这种情况下;尝试在使用IDE时无需链接即可构建。

为了实现我的配置,我改变了我的应用程序的配置类型:

General -> Project Defaults -> Configuration Type

具体而言,从Application (.exe)更改为Static library (.lib)。这将允许您构建所有项目,但不需要进行任何链接。

答案 2 :(得分:1)

好的,我的问题并不完全明确,我应该问的是: “我可以在不链接的情况下在C ++项目上运行静态代码分析吗?”。

最近的答案是“是的,在VS 2017中使用msbuild属性RunCodeAnalysisOnce = true”。

答案 3 :(得分:0)

Microsoft docs 声称此选项在开发环境中不可用。