1
我有以下情況:如何替換父目錄的Makefile中
SOURCES=home/main.cpp modelChecking/Configuracao.cpp modelChecking/Estado.cpp modelChecking/Formula.cpp modelChecking/ModelChecking.cpp lib/VisitTree.cpp
SUFIX=$(SOURCES:.cpp=.o)
OBJECTS=$(SUFIX)
all: refiner
refiner: $(OBJECTS)
$(CC) $^ -o refiner
home/main.o: home/main.cpp
$(CC) $(CFLAGS) $< -o [email protected]
modelChecking/Configuracao.o: modelChecking/Configuracao.cpp
$(CC) $(CFLAGS) $< -o [email protected]
modelChecking/Estado.o: modelChecking/Estado.cpp
$(CC) $(CFLAGS) $< -o [email protected]
...
...等等。
正如你所看到的,我有不同的目錄來編譯我的可執行文件。 現在,我希望把每個文件的.o在bin /文件夾和可變對象必須更換所有的父目錄,我嘗試了不同的方式:
OBJECTS=$(SUFIX:%/ = bin/)
OBJECTS=$(subst %/,bin/,$(SUFIX))
OBJECTS=$(patsubst %/,bin/,$(SUFIX))
當我使用這樣$(subst home/,bin/,$(SUFIX))
它的工作原理,因爲我鍵入子字符串「home /」,但我需要一個正則表達式來替換所有目錄。 我會需要改變目標太大,也許下面將代碼工作:
%.o: %.cpp
$(CC) $(CFLAGS) $< -o [email protected]
...但我喜歡每一個目標單獨
只是不。 'make'幾乎假定輸入和輸出文件將在同一個目錄中,除了單獨的'install'步驟將文件複製到其最終目的地。是的,你可以解決這個問題,但你爲什麼要這樣做?順其自然。 – reinierpost 2015-02-09 22:28:39