fpc: PPU Источник: [юнит] .pas недоступен - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь скомпилировать следующую минимальную программу FreeVision, используя Free Pascal Compiler версии 3.0.4 [2018/10/02] для x86_64 на macOs Mojave.

Program VeryShort;
Uses App;

Var MyProgram: TApplication;

Begin
    MyProgram.Init;
    MyProgram.Run;
    MyProgram.Done;
End.

Однако я получаю следующее сообщение об ошибке:

$ fpc veryshort.p
Free Pascal Compiler version 3.0.4 [2018/10/02] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
Target OS: Darwin for x86_64
Compiling veryshort.p
PPU Loading /usr/local/Cellar/fpc/3.0.4_1/lib/fpc/3.0.4/units/x86_64-darwin/fv/app.ppu
PPU Source: app.pas not available
PPU Source: platform.inc not available
Recompiling App, checksum changed for Menus
veryshort.p(2,6) Fatal: Can't find unit App used by VeryShort
Fatal: Compilation aborted
Error: /usr/local/bin/ppcx64 returned an error exitcode

Файл модуля app.ppu найден компилятором, поэтому я не понимаю, почему он пытается его перекомпилировать?

1 Ответ

2 голосов
/ 09 мая 2019

Используя опции -vut для компилятора, я обнаружил, что fpc выбирает неверную единицу в качестве зависимости: есть единица menus.ppu в двух местах:

  • lib/fpc/3.0.4/units/x86_64-darwin/fv/menus.ppu
  • lib/fpc/3.0.4/units/x86_64-darwin/univint/Menus.ppu.

К сожалению, univint находится на пути поиска юнитов до fv, поэтому выбран не тот юнит.

Я решил проблему, явно указав путь к FreeVision в командной строке: таким образом, единицы FreeVision предпочтительнее, в то время как требуемые univint единицы еще можно найти:

$ fpc -Fu/usr/local/lib/fpc/3.0.4/units/x86_64-darwin/fv veryshort.p

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

...