Я создаю сборки с использованием MSBuild и строю конфигурации, настроенные в dproj в командной строке. Это немного обескураживает то, что размер исполняемых файлов, созданных таким образом, отличается (но не намного, но все же!) Тем, что создает сборка IDE. Любые идеи почему? Я бы подумал, что используется тот же компилятор?Почему исполняемый файл Delphi 2009 IDE отличается от исполняемого файла, созданного в командной строке?
ответ
Чтобы посмотреть, что такое IDE, проверьте
Инструменты | Варианты | Параметры среды | Компиляция и запуск | Показать командную строку
И вы можете проверить сообщения компилятора.
Основная мощность здания из командной строки компилятора Delphi является стандартизацией - вы явно определить параметры (в командной строке, в .cfg файлов и т.д.), и компилятор следует вариантам, представленные исключительно. Напротив, IDE имеет много других типов поведения, которые не ясны и ясны - например, он может искать пути к библиотеке, не указанные в параметрах проекта. Я предполагаю, что что-то происходит в сборке IDE, о котором вы не совсем осознаете, и поэтому стандартизованные сборки выполняются из командной строки.
Такое поведение существует в каждой версии Delphi, которую я использовал. (5 - 2006). Я бы не стал беспокоиться об этом. Когда я впервые обнаружил это, я потратил много времени, пытаясь решить эту проблему. Я пропустил флаг компилятора? Есть ли несоответствие между IDE и поддерживаемыми параметрами компилятора командной строки?
В конце концов я решил, что дело не в этом. Оба последовательно создавали функционально эквивалентные исполняемые файлы.
Если вы предоставили точно такие же параметры компилятору командной строки, то произведенные исполняемые файлы будут практически идентичны.
На самом деле IDE просто вызывает компилятор командной строки. Скомпилируйте свой проект в среде IDE и посмотрите окно сообщений. вы увидите полный вызов dcc32.exe ...
Первый ответ на использование командной строки для согласованности сборки - это правильно, и, вероятно, вам не о чем беспокоиться, если вы полагаетесь на систему сборки, где производственные файлы всегда поступают из консольных сборников.
С другой стороны, если вы действительно хотите выяснить, что происходит, вы должны включить файлы карт (на полном уровне детализации) и сравнить/разделить их. Если между ними будут различия, они появятся там. Любые другие различия, которые могут существовать, вероятно, являются результатом того, что параметр линии связи является другим (например, условный флаг, который может быть установлен в настройках IDE).
+1 для рекомендации файла карты. Кажется, у них сейчас гораздо меньше внимания, но они все еще очень важны для понимания того, что на самом деле используется приложением. – skamradt
- 1. Выход IDE отличается от командной строки
- 2. Имя исполняемого файла приложения отличается от имени исполняемого файла vshost
- 3. Код возврата в командной строке Delphi 5 IDE
- 4. Запись командного файла отличается от команды ввода в командной строке?
- 5. Почему Delphi Command Line дает мне отличный результат для IDE?
- 6. Преобразование Unix, исполняемого в исполняемый файл Windows
- 7. Описание структуры структуры IDE Delphi 2009
- 8. Delphi 2009 - файл res не воссоздан
- 9. Имя параметра файла WSDL, созданного Axis2, отличается от фактического имени
- 10. «Использовать исполняемый файл отката» не применяет установку исполняемого файла
- 11. Запуск исполняемого файла Unix из командной строки
- 12. Список динамических зависимостей исполняемого файла Windows в командной строке?
- 13. Превращение исполняемого файла .NET в собственный исполняемый файл
- 14. Найти путь, используемый в командной строке при вызове исполняемого
- 15. Delphi WideString и Delphi 2009+
- 16. Документация Delphi 2009
- 17. исполняемый файл Jar не запускается: ошибка в командной строке
- 18. Компиляция delphi 5 кода в Delphi 2009
- 19. Смотрите инструкции от исполняемого файла?
- 20. «Основы Delphi» в Delphi 2009
- 21. Запустить исполняемый файл из файла makefile
- 22. создание gif-анимационного файла в delphi 2009?
- 23. Как изменить имя вывода исполняемого файла, созданного Visual Studio
- 24. нет исполняемого файла, созданного в eclipse после сборки
- 25. Отдельный исполняемый файл
- 26. Почему файл APK, созданный Android Studio, отличается от APK, созданного Eclipse?
- 27. gmon.out не создается, когда исполняемый файл вилки другого исполняемого файла
- 28. Компилятор командной строки Delphi 2009 с использованием dcc32.cfg?
- 29. Отладка COM-исполняемого файла
- 30. как запустить файл js в командной строке
Как это может помочь OP на самом деле сделать это, хотя? –
Он помогает в том, что вы можете убедиться, что/можете/управлять вашим инструментом сборки (Стив упомянул MSBuild в своем вопросе), чтобы скомпилировать * точно * так же, как и с IDE Delphi. –