Использовать устройство в другой папке в Pascal - PullRequest
1 голос
/ 04 апреля 2020

Я хочу иметь структуру типа /project/functions /project/src. У меня был бы блок /project/functions/helloUnit.pas, похожий на:

unit helloUnit;
interface
implementation
uses classes;
procedure helloWorld(output);
begin
  writeln('Hello, World');
end.

И файл /project/src/main.pas вроде:

uses helloUnit;
Begin
  helloWorld;
End.

Я пытался заставить его работать, но не нашел путь. Я использую компилятор fp c в командной строке linux на случай, если я не определю путь или что-то в этом роде.

1 Ответ

0 голосов
/ 04 апреля 2020

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

Во-первых, вам нужен файл проекта для fpc для компиляции в создайте свою программу. Для этого я создал этот файл в папке проектов и назвал его hello.lpr:

program Hello;

uses
  hellounit,
  main;

begin
  HelloWorld;
end.

Затем исправьте Main.Pas следующим образом:

unit main;

interface

uses helloUnit;

procedure SayHello;

implementation

procedure SayHello;
Begin
  helloWorld;
End;
End.

Обратите внимание, что procedure SayHello; имеет был добавлен в раздел интерфейса, а End; был добавлен в конец объявления процедуры. End. сообщает компилятору, что он достиг конца исходного кода в модуле.

Далее исправьте helloUnit следующим образом

unit helloUnit;

interface

procedure helloWorld;

implementation

uses classes;

procedure helloWorld;
begin
  writeln('Hello, World');
end; {added}

end.

Теперь напишите пакетный файл CompileHello.Bat ( предполагая Windows) в папке проектов, содержащей

D:\Lazarus2\fpc\3.0.4\bin\i386-win32\fpc -Fufunctions;src hello.lpr

, а затем запустите ее из командной строки CMD в папке проектов. Переключатель компилятора -Fu сообщает fpc, где искать модули, которые не находятся в той же папке, что и файл проекта. Пути после -Fu могут быть относительно папки проекта. Если вы выполнили шаги, описанные выше, он должен успешно скомпилироваться.

Если вы использовали Lazarus, сопутствующая среда IDE для fp c, было бы как минимум два способа выполнить то, что вы просили.

  1. Когда HelloUnit открыт в IDE, используйте View | Добавьте файл редактора в проект из меню IDE, чтобы добавить HelloUnit в проект. Это, вероятно, лучший способ, потому что он однозначно определяет HelloUnit для проекта.

  2. Добавьте папку, в которой находится HelloUnit.Pas, к исходным путям проекта с помощью Project | Параметры и во всплывающем окне в разделе «Параметры компилятора» добавьте папку в поле «Другие файлы модуля» на RHS.

...