Delphi XE2 опция установить вложенный предел? - PullRequest
1 голос
/ 14 января 2012

У меня есть сложная группа проектов, в которой сконфигурировано около 10 «окончательных» конфигураций сборки, где каждый узел имеет свой собственный набор опций.Примерно так:

  • База
    • Релиз
      • Релиз Общий 1
        • Релиз финальный 1
        • ...
        • Окончательный выпуск 5
      • Общий выпуск 2
        • Окончательный выпуск 6
        • ...
    • Отладка
      • То же, что и выпуск, но для отладки

Итак, все базы, Release,Release Generic X, Release Final Y имеют собственный набор параметров, сохраненный в файлах и добавленный в качестве ссылки.Таким образом, у вас будет

  • base.optset
    • Release.optset
      • Release Generic 1.optset
        • Release Final 1.optset
        • ..

Основные различия между этими наборами опций заключаются в том, что различные компиляторы определяют включение / отключение определенных функций, которыеорганизованный в дереве, упомянутом выше (отсюда цели сборки и наборы опций) и, очевидно, пути поиска, которые включают в себя необходимые вещи.Таким образом, каждый набор параметров также содержит различные пути поиска, которые зависят от соответствующей конфигурации сборки.В группе проектов более 100 проектов, и большинство из них связаны друг с другом на разных уровнях конфигурации, поэтому есть также несколько групп сборки, но это не имеет значения для вопроса, так как сейчас я пытаюсь построитьпроекты по одному.

Проблема в том, что каждый набор параметров настраивает путь поиска.Вплоть до «Release Generic 1.optset» путь поиска корректно обновляется и используется.Тем не менее, "Release Final 1" и братья и сестры не получают пути поиска, представленные "Release Final 1.optset".(Я знаю это, потому что я посмотрел на сообщения компилятора и проверил параметры, переданные в dcc32). Похоже, набор параметров игнорируется.

Все настроено с «унаследовать = true» в наборе параметров.

Ничего конкретного в конфигурациях сборки нет, нигде.Каждый проект использует конфигурацию только в файлах IDE и набора опций.

Задокументирована ли эта проблема / ограничение где-либо / о чем известно?Есть ли обходной путь?За исключением применения параметра, установленного в качестве значения, а не по ссылке.

Спасибо.

позднее редактирование: я решил реализовать довольно уродливый обходной путь, чтобы начать работу: в основном, репликация конфигурации из«Release Generic 1.optset» в каждом «Release Final? .Optset» имеет главный недостаток, заключающийся в необходимости редактировать 5 файлов набора опций, распространяющих одну и ту же модификацию, когда требуется добавить что-то в «Release Generic 1.optset»

1 Ответ

1 голос
/ 24 августа 2014

Наконец мне удалось выяснить проблему. Это на самом деле ошибка в Delphi IDE, которая портит импорт в файле dproj.

В частности, если набор опций добавляется один раз, он не будет поддерживаться с необходимыми условиями импорта для остальных конфигов.

Это обычно происходит, когда вы добавляете / удаляете конфигурацию, dproj перезагружается и файлы optset больше не импортируются для всех конфигов.

Но если ваши конфиги стабильны и вы больше не меняете их, dproj остается стабильным.

Я смоделировал приложение для проверки файлов dproj на предмет этих проблем, убедившись, что в каждой конфигурации есть свои файлы optset в директиве импорта. Мне еще предстоит это исправить автоматически, так как я довольно занят. Но как только мне удастся найти время или, если оно затронет больше людей и потребует автоматического исправления, я попытаюсь выпустить релиз.

До этого, если вы заметили, что набор опций не применяется для конкретной конфигурации, просто найдите идентификатор конфигурации в dproj (что-то вроде Cfg_10) и посмотрите, сможете ли вы найти

<Import Condition="'$(Cfg_10)'!='' And Exists('optset file path name')" Project="optio file path name"/>

если нет, то добавьте его после другого <import calls

...