我正在使用MSBuild生成构建,并在命令行中设置dproj中的构建配置。令人不安的是,因此生成的可执行文件的大小与IDE构建产生的大小略有不同(虽然不多,但仍然存在!)有什么想法吗?我本以为会使用相同的编译器?
从Delphi命令行编译器构建的主要优势是标准化 - 您明确地识别选项(在命令行上,在.cfg文件中等),编译器严格遵循提供的选项。相比之下,IDE具有许多不清晰和明确的其他行为 - 例如,它可能搜索未在项目选项中指定的库路径。我猜测您并不完全了解IDE构建中发生的事情,这就是为什么要从命令行执行标准化构建的原因。
关于使用命令行进行构建一致性的第一个回答是正确的,如果您依赖于一个构建系统,在该系统中生产文件始终从控制台构建中获取,则可能无需担心此问题。
另一方面,如果您真的想弄清楚发生了什么,您应该打开映射文件(在完整详细级别上),并进行比较/差异。如果两者之间存在差异,则会在那里显示。任何其他可能存在的差异都可能是由于命令行选项不同(例如,在IDE设置中设置的条件标志)。
这种行为在我使用的每个 Delphi 版本中都存在(5-2006)。我不会太担心它。当我第一次发现它时,我花了很多时间尝试解决差异。我错过了编译器标志吗?IDE 和命令行编译器支持的选项之间是否存在差异?
最终,我决定这不是一个大问题。两者都可以产生功能等效的可执行文件。
如果您向命令行编译器提供完全相同的参数,则生成的可执行文件几乎是相同的。
实际上,IDE只是调用命令行编译器。在IDE中编译您的项目并查看消息窗口。您将看到完整的dcc32.exe调用...