В вашем примере кода есть некоторые ошибки, которые было бы полезно исправить, прежде чем пытаться скомпилировать его из командной строки.
Во-первых, вам нужен файл проекта для 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, было бы как минимум два способа выполнить то, что вы просили.
Когда HelloUnit открыт в IDE, используйте View | Добавьте файл редактора в проект из меню IDE, чтобы добавить HelloUnit в проект. Это, вероятно, лучший способ, потому что он однозначно определяет HelloUnit для проекта.
Добавьте папку, в которой находится HelloUnit.Pas, к исходным путям проекта с помощью Project | Параметры и во всплывающем окне в разделе «Параметры компилятора» добавьте папку в поле «Другие файлы модуля» на RHS.