为什么Delphi 2009 IDE生成的可执行文件与命令行生成的可执行文件不同?

时间:2009-05-22 11:07:23

标签: delphi msbuild delphi-2009

我正在使用MSBuild生成构建,并在命令行上构建在dproj中设置的配置。令人不安的是,这样生成的可执行文件的大小与IDE构建产生的不同(不是很多,但仍然是!)。有什么想法吗?我原以为会使用相同的编译器?

5 个答案:

答案 0 :(得分:10)

从Delphi命令行编译器构建的主要功能是标准化 - 您明确标识选项(在命令行上,在.cfg文件中等),并且编译器遵循独家提供的选项。相比之下,IDE还有许多其他不清晰明确的行为 - 例如,它可能会搜索未在“项目选项”中指定的库路径。我的猜测是IDE构建中发生了一些您并不完全清楚的事情 - 这就是为什么标准化构建是从命令行完成的。

答案 1 :(得分:8)

要查看IDE是什么,请检查

工具|选项|环境选项|编译和运行|显示命令行

您可以检查编译器消息。

答案 2 :(得分:3)

关于使用命令行进行构建一致性的第一个答案是正确的,如果您依赖于生成文件总是来自控制台构建的构建系统,那么您可能不必担心。

另一方面,如果你真的想知道发生了什么,你应该打开地图文件(在完整的细节级别)并比较/区分它们。如果两者之间存在差异,他们就会出现在那里。可能存在的任何其他差异可能是由于命令行选项不同(例如可以在IDE设置中设置的条件标志)。

答案 3 :(得分:0)

在我使用的每个版本的Delphi中都存在这种行为。 (5 - 2006)。我不会太担心它。当我第一次发现它时,我花了很多时间来解决这个问题。我错过了编译器标志吗? IDE与命令行编译器支持的选项之间是否存在差异?

最后,我认为这不是一个大问题。两者都始终生成功能相同的可执行文件。

答案 4 :(得分:0)

如果为命令行编译器提供完全相同的参数,则生成的可执行文件实际上将完全相同。

实际上IDE只调用命令行编译器。在IDE中编译项目并查看消息窗口。你会看到完整的dcc32.exe调用...