この質問には以前に尋ねられた場合は謝り、調査し、適切な回答を見つけることができませんでした。複数のファイルを1つのルールで生成する - Makefile
私はmakeを使用してコンパイルする必要があるC++プロジェクトを持っています。
私が必要とする出力は、1つのmakeファイルを使用する3つの異なる実行可能ファイルですが、パターンルールを使用してコンパイルする必要があります。
プロジェクトは、実行可能ファイルごとに3つのソースファイルで構成され、すべてがオブジェクトファイルにコンパイルされたヘッダーファイルの関数を使用します。
は、私はそれらすべてをコンパイルするために管理しますが、各ファイル
一つのルールの例については、別々のルールを使用しています
file1: file1.cpp header.o header.h
g++ $(FLAGS) file1.cpp header.o -o file1
感謝。
編集:
file1: file1.cpp header.o header.h
g++ $(FLAGS) file1.cpp header.o -o file1
file2: file2.cpp header.o header.h
g++ $(FLAGS) file2.cpp header.o -o file2
file3: file3.cpp header.o header.h
g++ $(FLAGS) file3.cpp header.o -o file3
これらは、実行可能
header.o: header.cpp header.h
g++ $(FLAGS) -c header.cpp -o header.o
されており、これは機能を持つオブジェクトファイル
FLAGS変数はヘッダファイルが格納されているディレクトリが含まれています。
を動作するはずですあなたがする必要があるすべては、あなたの変数とルールの正しい形式を使用する以下で、コンパイルとリンクするためのbuilt-in rulesを持っています'と' header.h'?最初にヘッダを別々にコンパイルするのはなぜですか?いずれの場合でも 'file1:file1.cpp'パターンが実行可能ファイルごとに保持されている場合は、[mcve]を発行して単一のレシピは必要ありません。 – user657267
こんにちは、私はメインのポストを編集し、私が持っているすべてのコードが含まれています。ヘッダーファイルをオブジェクトコードにコンパイルして、各実行可能ファイルにリンクします。 – Joe
それでもまだmcveではなく、 'FLAGS'は何に設定されていますか?私が 'header.o'と述べたのは、ヘッダーを別々にコンパイルしないことです。(あなたがここにないプリコンパイルされたヘッダーのようなものを使用する場合を除いて)、他の翻訳単位で' include'dされます。 – user657267