ライブラリが実行可能ファイルを兼ねるのが好きです。望ましい動作は次のとおりです。
$ ./scriptedmain
Main: The meaning of life is: 42
$ ./test
Test: The meaning of life is: 42
どうやって:
- バイナリ
scriptedmain.p
にコンパイルしscriptedmain
ますか? - 's /セクションに
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
でコンパイルすると、Pascalがユニットであることを検出するため、実行可能ファイルは作成されません。しかし、ライブラリに加えて実行可能ファイルにしたいのです。
$ ./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
、結果の実行可能ファイルは2つのbegin
/end
宣言を結合します(望ましい動作ではありません)。
$ ./test
Main: The meaning of life is: 42
Test: The meaning of life is: 42