*.c
多くのユニットファイルで構成される中規模のプロジェクトがあります。
「通常の」コンパイルでは、プログラムは、レシピ*.o
でメイン プログラムの前提条件として渡されるオブジェクト ファイルから構築されます。Makefile
これは、並列ビルドに適しています。 を使用するとmake -j
、これらすべてのオブジェクト ファイルが並列にコンパイルされ、最後にリンクされます。これにより、ビルド全体のエクスペリエンスが大幅に高速化されます。
ただし、それ以外の場合、前提条件のリストは、オブジェクト ファイルではなく*.c
、ユニット ファイルのリストとして渡されます。当初の意図は、キャッシュを汚染する可能性があるため、これらのオブジェクト ファイルを構築しないことです。さて、これはおそらく別の方法で行うことができますが、この特定のプロジェクトでは、は不変オブジェクトであるため、更新できず、それと一緒に暮らす必要があります。 *.o
Makefile
この場合、単一のコマンドラインでユニットの完全なリストを直接受け取るため、 を使用しても効果的ではありませんmake -j
。つまり、並列処理を整理できなくなりました。gcc
make
私に残された唯一の機会は、フラグとパラメータを に渡すことmake
です。gcc
内部でユニットのリストを並行してコンパイルするものを見つけようとしていました。何も見つかりませんでした。make
インターネットで検索すると、「並列ビルドができるので、gcc
この機能を複製する必要はない」という推測が見つかりました。しかし、解決策はありません。
問題は、それをどのように処理するかです。
標準フラグ ( 、、、 )gcc *.c -o final_exe
を介して変更できるのようなコンパイル行を想定すると、これらのユニットを並行して構築するために使用できるオプションはありますか?CC
CFLAGS
CPPFLAGS
LDFLAGS