Delphi 7 жалуется на не найденные файлы
Вопрос
У меня есть файл BPG, который я изменил, чтобы использовать в качестве файла make для сервера автоматической сборки нашей компании.Чтобы заставить его работать, мне пришлось изменить
Uses * Uses unit1 in 'unit1.pas' * unit1 unit2 in 'unit2.pas' * unit2 ... * ...
в файле DPR, чтобы заставить его работать без того, чтобы компилятор не выдал мне какую-то болтовню о unit1.pas, который не найден.Это раздражает, потому что я хочу использовать файл BPG, чтобы фактически увидеть содержимое моего проекта, и каждый раз, когда я добавляю новый модуль, он автоматически подключает его из «unitx.pas» в мой файл DPR.
я бегу make -f [then some options]
, файлы DPR, которые я компилирую, находятся не в том же каталоге, что и файл make, но я не уверен, что это имеет значение.Все компилируется нормально, пока in 'unit1.pas
удален.
Решение
Это может быть связано с тем, что путь поиска в IDE и путь поиска компилятора командной строки не совпадают.Если вы измените путь поиска компилятора командной строки, вы сможете использовать точно такой же исходный код, как и в IDE.
Одна из возможностей настроить путь поиска для компилятора командной строки — сделать это в файле dcc32.cfg.Посмотрите справку, в справке IDE есть краткое описание dcc32.cfg.
Другие советы
Ну, этот обходной путь сработал для меня.
//{$define PACKAGE} {$ifdef PACKAGE} uses unit1 in 'unit1.pas' unit2 in 'unit2.pas' ... {$else} uses unit1 unit2 ... {$endif}
Единственная проблема заключается в том, что всякий раз, когда вы добавляете новый модуль, Delphi стирает ваш ifdef package
на вершине.
Каждый раз, когда мне нужно поместить условия в файл проекта, я делаю это:
program a;
uses
ACondUnits;
...
unit ACondUnits;
interface
uses
{$IFDEF UseD7MM}
Delphi7MM;
{$ELSE}
FastMM4;
{$ENDIF}
implementation
end.
Возможно, этот трюк работает и в пакетах.Никогда не пытался.