Мне нравится, что мои библиотеки дублируются как исполняемые файлы.Желаемое поведение:
$ ./scriptedmain
Main: The meaning of life is: 42
$ ./test
Test: The meaning of life is: 42
Как я могу:
- Получить
scriptedmain.p
для компиляции в scriptedmain
двоичный файл? - Предотвратить
test.p
от запуска кода, который находится в scriptedmain.p
begin
/ end
разделе?
scriptedmain.p:
unit ScriptedMain;
interface
function MeaningOfLife () : integer;
implementation
function MeaningOfLife () : integer;
begin
MeaningOfLife := 42
end;
begin
write('Main: The meaning of life is: ');
writeln(MeaningOfLife())
end.
Когда я компилирую scriptedmain.p с fpc scriptedmain.p
, исполняемый файл не создается, потому что Паскаль обнаруживает, что это юнит.Но я хочу, чтобы это был исполняемый файл в дополнение к библиотеке.
$ ./scriptedmain
-bash: ./scriptedmain: No such file or directory
test.p:
program Test;
uses
ScriptedMain;
begin
write('Test: The meaning of life is: ');
writeln(MeaningOfLife())
end.
Когда я компилирую test.p с fpc test.p
, полученный исполняемый файлобъединяет два объявления begin
/ end
(НЕ желаемое поведение).
$ ./test
Main: The meaning of life is: 42
Test: The meaning of life is: 42