これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド makepp_builtin です。
プログラム:
NAME
makepp_builtin -- makepp の組み込みルール
DESCRIPTION
指定した場合でも、Makeppはプログラムのコンパイルとリンクの方法を理解できる場合があります
ルールはまったくありません (または Makeppfile さえ持っていない場合)。 すべての Makeppfile の後
ロードされると、makepp は一連のデフォルト ルールもロードします。 (これらのルールは、
Makeppfile 内の他の規則を上書きしないでください。) デフォルトの規則データベースが保存されます。
makeppディストリビューションまたはライブラリディレクトリの「makepp_builtin_rules.mk」ファイルにあるので、
いつでもそれを見て、デフォルトのルールが何であるかを正確に確認できます。
Makepp の組み込み規則は、GNU make の規則とほとんど同じですが、
GNUが作成するいくつかのまれな言語のルールにはルールがあります. (これは意図的なものです。
いくつかのプロジェクトで GNU make でしばしば問題に遭遇し、誤って一部を再利用しました。
GNU がそれらのまれな言語に割り当てる接尾辞です。) ルールは同じものを使用します。
いくつかの有用な追加を含む、GNU make のような変数。 Makepp は GNU より賢い
どのコンパイラを使用するか、他のどのオブジェクトとライブラリをリンクするかを推測する
インチ
デフォルト 変数 値
Makepp は、多くの変数のデフォルト値を提供します。 これらのほとんどは、通常、
ルールで使用され、実際にデフォルト ルールで使用されます。 それらの値はオーバーライドできます
Makeppfile またはコマンドラインでこれらの変数に割り当てることによって。
これらの変数は、makepp_variables の「定義済み変数」に記載されています。 あなたが持っている場合
変数が何に評価されるかについて質問がある場合は、いつでも次のような行を入れることができます
Makeppfile のこれらの行:
ダミー := $(print $(CC))
&echo -- $(CC) # 前のルールよりインデントを少なくする必要があります。
これは、Makeppfile がロードされたときに "$(CC)" 変数の値を出力するだけです。
(ちなみに、これは、よくわからない式をデバッグするのに便利な方法です。
右。)
編集 ルール
簡略化された形式で、コンパイル ルールは次のようになります。 もし、あんたが
指定された変数のいずれかの値を変更すると、コンパイル コマンドは次のように変更されます。
期待した。
#
# C プログラムの場合:
#
%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $(入力) -o $(出力)
#
# C++ プログラムの場合:
#
%.o: %.cxx # また、%.cc、%.cpp、%.c++、および %.C
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(入力) -o $(出力)
#
# Fortran プログラムの場合:
#
%。の
$(FC) $(FFLAGS) -c $(入力) -o $(出力)
#
# yacc と lex:
#
%.c: %.y
$(YACC) $(YFLAGS) $(入力)
&mv -f y.tab.c $(出力)
%.c: %.l
$(LEX) $(LFLAGS) -t $(入力) -o $(出力)
正確な詳細に興味がある場合は、ファイルを参照してください。
makepp_builtin_rules.mk makepp ディストリビューションで。
リンク ルール
Makepp は、プログラムをリンクする方法も知っています。 Makepp は、
リンクコマンドを理解することになると、標準のUnix make。 あなたがしようとしているとしましょう
ターゲットプログラム「xyz」をビルドします。 Makepp はこれを "xyz.o" からビルドしようとします。
(標準の Unix の make とは異なり) また、他のオブジェクトまたは
ライブラリをリンクする必要があります。
リンク規則は次のようになります。
xyz: $(infer_objects xyz.o, *.o)
$(infer_linker $(入力)) $(入力) $(LDFLAGS) $(LDLIBS) $(LIBS) -o $(出力)
「$(infer_objects)」は、他にどの「.o」ファイルをリンクする必要があるかを推測しようとします。
どの「.h」ファイルが含まれていますか。
「推論されたリンカー」は、すべてのソースが「$(CC)」に変わる特殊な魔法です。
ソースのいずれかが C++ の場合は "$(CXX)"、ソースのいずれかが C++ の場合は "$(F77)" です。
Fortran。
ターニング OFF 内蔵 ルール
組み込みのルールが気に入らない場合は、使用しないでください。 それらがうまくいかない場合は、
ビルドはおそらく十分に複雑で、独自のカスタム Makeppfile が必要です
とにかく。
組み込みのルールをオフにするには、次のような行を Makeppfile に追加します。
makepp_no_builtin = 1
それらを使用するが、かなり高価な組み込みリンカー規則を使用しない場合は、それらを変更できます
でオフ:
makepp_no_builtin_linker = 1
下位互換性のために、これを含めると、makepp はデフォルトのルールも無効にします。
Makeppfile のどこかに次の行があります。
.Suffixes:
を指定することで、ビルド全体のすべての Makeppfile の組み込みルールを無効にすることができます。
コマンドラインの「--no-builtin-rules」オプション。
onworks.net サービスを使用してオンラインで makepp_builtin を使用する