如果以前已經詢問過此問題,我對此進行了研究並找不到合適的答案,我表示歉意。使用一個規則生成多個文件 - Makefile
我有一個C++項目,我必須使用make進行編譯。
我想要的輸出是使用一個make文件的三個不同的可執行文件,但我必須使用一個模式規則進行編譯。
該項目由每個可執行文件的三個源文件組成,所有這些文件都使用頭文件中的函數,並將其編譯爲目標文件。
我已成功地編譯它們,而是使用一個單獨的規則爲每個文件
一個規則的例子:
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變量包括,其中頭文件被存儲在目錄中的對象文件。
爲什麼'file1'取決於兩個'header.o '和'header.h'?爲什麼你首先要分開編譯頭文件?無論如何,如果'file1:file1.cpp'模式適用於每個可執行文件,那麼您甚至不需要單個配方,發佈[mcve]。 – user657267
您好,我編輯了主帖,幷包含了我擁有的所有代碼。我正在將頭文件編譯爲目標代碼,然後將其鏈接到每個可執行文件。 – Joe
這仍然不是一個mcve,'FLAGS'設置爲什麼?我提到'header.o'的原因是你從不**單獨編譯頭文件(除非使用像預編譯頭文件這樣的東西,你不在這裏),它們被包含在其他的翻譯單元中。 – user657267