どのように機能しますか?それは魔法によって動作します! - 私の意見では、それはひどいビットのMakefileです(最後に実用的な発言)。
make
はシンプルな構文で、シンプルなシステムですが、これはうまくいきます。しかし、何年も前から、それは圧縮された構文と広範なマニュアルを持っていて、いくつかのMakefileを一緒にしてラインノイズのように見せている(そして私はあなたに、GNU Makeを見ています)。ここなど。
時にはあなたは、ない多かれ少なかれソフトウェアのビットを構築するための巧妙な事をしなければならないが、(私の意見と経験で)これらははるかに自然と分かりルールに洗練さを追加することによって処理されますメークファイル構文自体。そうすれば、Makefileの構造を合理的に分かりやすくすることができます。これは、ソフトウェアの構築方法を理解し調整する必要がある場合に重要です。
私は非常に複雑なMakefileを書きますが、たまにはpatsubst
のような複雑なフィルタを使用します(しかし、私は一般的にGNU Make-BSD/POSIX Makeを使用しています。
また、重い持ち上げの特定の部分を行うために補助ツールを使用することもできます。たとえば、あなたは、ツールの検索を行うにはautoconfを使用する場合がありますMakefile.in
に
[email protected][email protected]
[email protected][email protected]
を書き、そして含まconfigure.ac
が
dnl Process this file with autoconf
AC_INIT(fooprog, 0.1-SNAPSHOT, [email protected])
AC_PATH_PROG(PRE_PROC_EXE, pre_proc.pl, NOT_FOUND)
AC_PATH_PROG(PRE_PROC_EXE2, pre_proc2.pl, NOT_FOUND)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
その後
autoconf; ./configure
pre_proc{,2}.pl
を見つけるだろう書いて、新しいに代入します
Makefile
。
autoconf
は少しは慣れていますが、初めて慣れると自然になります。
あなたの特定の例に戻って、私はそのターゲットが何をするか少し考えを(二つのコロンは?私は...知られたくない)持っている、しかし、あなたは
$(PRE_PROC_EXE) < $< | $(PRE_PROC_EXE2) > [email protected]
にルールを調整することができるかもしれません
は、両方のプリプロセッサを通じて入力ファイル*.c
を渡します。
同じレシピまたはそれ自身のレシピで 'PRE_PROC2_EXE'を使用しようとしていますか?ストリーミングされた入力またはファイルを直接取るか?中間ファイルの2番目のセットが必要ですか? –
中間ファイルの第2セットが必要です。 './pre_proc2.pl in_file> out_file' – Jean
2番目のmakeルールは必要ですか? '$(FILES)'や別のmake変数などに別のエントリが必要なのでしょうか?その1つのルールで両方のコマンドを実行したいだけですか? –