#delphi #delphi-2010
#delphi #delphi-2010
Вопрос:
Как я могу изменить пользовательскую переменную типа $ (Test) с помощью кода, используя директиву компилятора или через параметры проекта?
Я определил эту переменную, которая иногда указывает на исходный код магистрали svn, а иногда на источник тега svn. Я использую этот параметр в пути к библиотеке. Когда я открываю магистральный проект, мне нужно, чтобы var был установлен на исходный код магистрального svn, а когда я открываю проект с тегом svn, мне нужно, чтобы var был установлен на тег svn. Оба проекта в магистрали и теге одинаковы, но в магистрали есть некоторые модификации (это код, над которым я работаю, и он еще не готов к использованию).
Я не хочу переходить к параметрам инструментов, чтобы устанавливать это каждый раз, когда я меняю проекты.
Редактировать:
Я знаю, что мог бы использовать путь к исходному коду проекта вместо пути к библиотеке, но мне нужно, чтобы все исходные коды были в пути к библиотеке, чтобы я мог легко отлаживать проект, использующий мой фреймворк.
Комментарии:
1. Вы не совсем понимаете, что вы пытаетесь здесь сделать.
$(Test)
ссылается на переменную среды с именемTest
и не имеет абсолютно никакого отношения к компилятору; она используется IDE для разрешения путей (каталогов) во время компиляции. Определение компилятора ничего не сделало бы для изменения среды. Пожалуйста, отредактируйте свой вопрос, чтобы уточнить, что вы пытаетесь сделать.2. я не знаю об использовании директивы компилятора для этого. но если вам нужен другой метод, вот: сначала вы должны отметить, какие эти переменные доступны только при запуске вашего приложения в среде ide delphi, теперь вы можете прочитать эти переменные с помощью
GetEnvironmentVariable
функции и задать значение с помощьюSetEnvironmentVariable
, так что вы можете написать что-то подобное в своем кодеSetEnvironmentVariable('Test','C:');
3. Отредактировано, чтобы уточнить, что я ищу.
4. Я думаю, вы идете по этому неправильному пути. У вас должно быть два отдельных файла проекта (.dproj), и откройте тот в IDE, с которым вы хотите работать. Каждый файл конфигурации проекта содержит свою собственную информацию о пути. Единственное, что будет отличаться, это .dproj , и вы не проверяете это в своем VCS. Таким образом, когда вы проверяете код на входе / выходе из каждой ветви, он сохраняет свою собственную копию .dproj с правильными конфигурациями пути. (Я проверяю только исходные файлы .dfm, .dpr, .pas, .rc (resource) для своих собственных ресурсов и любые изображения, которые зависят от проекта или включены в упомянутые ресурсы.)
5. Да, согласен. Но у меня есть несколько проектов, которые используют мой фреймворк. Когда что-то идет не так с проектами hose, я хочу иметь возможность отлаживать их и мой фреймворк. Если у меня нет пути к библиотеке для каждой магистрали и тега, я не смогу.
Ответ №1:
Я бы, вероятно, создал два пакетных файла. Каждый из них сначала установил бы Test
переменной среды необходимое значение, а затем запустил IDE.
И затем каждый раз, когда мне нужно было работать с другим набором исходных файлов svn, мне приходилось (повторно) запускать IDE через соответствующий пакетный файл.
Комментарии:
1. Это то, что мы делаем, это кажется наименее ужасным вариантом. Некоторое время у нас был exe-файл, который редактировал dof-файлы предположительно универсальным способом, но он так часто ломался, что доставлял больше хлопот, чем того стоил. Лучше, чтобы это сделал человек и, возможно, скрипт проверил это.
Ответ №2:
Прямой ответ на вопрос таков: это невозможно!
Но, возможно, это решение проблемы: у вас могут быть специальные конфигурации сборки для обработки вашего конкретного запроса. Возможно, вы можете использовать optionset в существующей конфигурации сборки, чтобы установить правильные пути.