首先 - 我知道有很多類似的討論,但我花了幾個小時沒有他們爲我工作。GNU make在新創建的子目錄
我的makefile首先創建一個按當前日期和時間命名的目錄。然後我把makefile附加到一個頭文件中,該行用這個目錄名創建一個字符串。出於這個原因,我首先需要將所有源文件(包括頭文件)複製到新創建的子目錄中,以便保留原始頭文件並只修改將用於編譯的頭文件(在子目錄中)。然後我想建立在這個新目錄中。
我的問題在於如何正確構建新子目錄中的.o
文件。我已經找到了解決辦法是讓
$(NOW)%.o: $(NOW)%.cpp $(CC) -c $(FLAGS) $<
其中$(NOW)$
是子目錄名。問題是,我$(FLAGS)
似乎被忽略:輸出,大致
g++ -c -o <.o file> <.cpp file>
(是的,其實是多餘的介紹g++
和-c
之間的空間。)而建設中的頂層目錄一拉
%.o: %.cpp $(CC) -c $(FLAGS) $<
正確輸出
g++ -c <my flags> -o <.o file> <.cpp file>
總而言之,通過將源文件傳輸到新創建的子目錄並在該目錄中構建.o
文件,我無法正常編譯。 TYIA。
發佈'$(FLAGS)'設置的行。如果它是一個特定於目標的變量,那麼這可能會導致您描述的問題。另外,如果它是使用':='設置的,並且是'$(NOW)%。o'目標下的,那麼它的值將不會在該規則中生效。更完整的makefile會明確幫助診斷問題。 – blackghost