【发布时间】:2009-05-22 11:07:23
【问题描述】:
我正在使用 MSBuild 生成构建,并在命令行的 dproj 中设置构建配置。如此生成的可执行文件的大小与 IDE 构建生成的大小不同(差别不大,但仍然如此!),这有点令人不安。任何想法为什么?我会认为使用相同的编译器?
【问题讨论】:
标签: delphi msbuild delphi-2009
我正在使用 MSBuild 生成构建,并在命令行的 dproj 中设置构建配置。如此生成的可执行文件的大小与 IDE 构建生成的大小不同(差别不大,但仍然如此!),这有点令人不安。任何想法为什么?我会认为使用相同的编译器?
【问题讨论】:
标签: delphi msbuild delphi-2009
从 Delphi 命令行编译器构建的主要功能是标准化 - 您显式识别选项(在命令行、.cfg 文件等中),编译器遵循独家提供的选项。相比之下,IDE 有许多其他不明确和不明确的行为 - 例如,它可能会搜索项目选项中未指定的库路径。我的猜测是 IDE 构建中发生了一些您不完全了解的事情 - 这就是为什么从命令行完成标准化构建的原因。
【讨论】:
要查看 IDE 的功能,请查看
工具 |选项 |环境选项 |编译运行 |显示命令行
您可以检查编译器消息。
【讨论】:
关于使用命令行构建一致性的第一个答案是正确的,如果您依赖于生产文件始终来自控制台构建的构建系统,那么您可能无需担心。
另一方面,如果您真的想弄清楚发生了什么,您应该打开地图文件(在完整的细节级别)并比较/比较它们。如果两者之间存在差异,它们将出现在那里。可能存在的任何其他差异都可能是由于命令行选项不同(例如可能在 IDE 设置中设置的条件标志)造成的。
【讨论】:
这种行为在我使用过的每个版本的 Delphi 中都存在。 (5 - 2006 年)。我不会太担心它。当我第一次发现它时,我花了很多时间试图解决差异。我错过了编译器标志吗? IDE 和命令行编译器支持的选项之间是否存在差异?
最后我认为这不是什么大问题。两者都始终生成功能等效的可执行文件。
【讨论】:
如果您向命令行编译器提供完全相同的参数,则生成的可执行文件几乎是相同的。
事实上,IDE 只是调用命令行编译器。在 IDE 中编译您的项目并查看消息窗口。您将看到完整的 dcc32.exe 调用...
【讨论】: