如何从Visual Studio获取精确的编译器命令行?

12

我需要将一个DLL的构建从Visual Studio迁移到另一个构建系统。这个DLL的解决方案不是由我创建的,并且它有很多修改过的命令行选项等。我从Visual Studio的以下位置复制了编译器/链接器选项:

项目属性->配置属性->C/C++->命令行 项目属性->配置属性->链接器->命令行

然而,当我使用其他构建工具(我也尝试了简单的批处理文件)构建DLL时,生成的DLL大小略有不同,并且有时在使用该DLL时会导致崩溃(使用Visual Studio构建的DLL不会出现这种情况)。

因此,我的问题是:

  1. 除了Visual Studio属性页面中显示的内容之外,是否有更好的方法来查看确切的命令行?

  2. Visual Studio是否会执行任何超出命令行范围的操作(希望答案是否定的!):-)

1个回答

11
需要记住的一点是,命令行选项可以针对每个源文件进行设置,而不仅仅是针对整个项目,这可能是您所缺少的。
查看构建日志是了解所有情况的一种方法。在输出视图中,构建结束时,您应该会看到如下一行:
“构建日志已保存在“文件路径”处。”
在输出视图中Ctrl单击文件路径,它将加载日志文件,您应该会看到每个文件的所有命令行。
更新:
此答案适用于Visual Studio 2008。在较新版本的Visual Studio中,您不再在输出窗口中获得链接。相反,您必须导航到项目的构建目录以查看日志文件。请参见此处:

https://msdn.microsoft.com/en-us/library/jj651643.aspx

实际上,该链接略有错误。日志文件的扩展名应为.log而不是.txt。


谢谢!从构建日志中,我找到了问题所在。我所有的编译/链接开关都设置正确了,但是我忘记把清单添加到DLL中,这导致运行时链接失败。由于我来自Linux背景,所以并不太熟悉DLL及其所有细节。 - Benj
我看不到它。我只得到一个指向已创建的exe文件的链接,没有“生成日志已保存在文件路径”的部分。 - Bryce Sandlund
正如@BryceSandlund所说,构建输出并不总是提供日志文件路径(我甚至怀疑它是否会写入日志)。但是您可以在UI中使用详细/调试输出:菜单工具>选项;项目和解决方案>生成和运行>MSBuild项目生成输出详细程度。个人建议选择“详细”日志,通常它应该为您提供所需的信息。 - Damian Vogel
@DamianVogel - 这个答案是针对VS2008的。在更新的版本中,您仍然可以在构建目录中获得日志文件,其中包含完整的命令行,只要您的构建日志详细程度仍设置为“Normal”(默认值)。如果您只想查看命令行,则比输出窗口中的“详细”信息更容易阅读。我已更新我的答案。 - Gerald
在vs2019中找不到具有.log或.txt扩展名的日志文件。 - James Sun
对于 Visual Studio 2019 构建,日志文件名为 <proj_dir>\x64\release<proj_name.tlog>\CL.command.1.tlog 下的 *.tlog。 - Prabindh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接