[英]How to merge two Makefiles (each builds scripts with certain environment variables set) into a single Makefile?
我有兩個帶有兩個不同C ++源代碼的目錄,它們每個都執行不同的程序。 目錄有其自己的Makefile,每個文件都使用設置了某些環境變量的腳本來構建。
現在,我想將兩個目錄的內容放到一個目錄中,因為我想將兩個C ++源代碼混合在一起,以便開發一個利用這兩個程序功能的新C ++源代碼。
到目前為止,我將所有文件都放在一個目錄中,當我放置相應的Makefile時,可以成功構建每個原始源代碼。 現在,我希望有一個Makefile,該文件允許我構建每個原始源代碼(而不替換Makefile),希望這將允許我構建新的混合C ++源文件...
我嘗試了一個簡單的解決方案,然后將兩個Makefile的內容都放到了一個Makefile中,這是行不通的...
我認為發布我的兩個Makefile非常有用
這是第一個
# A simple $(MAKE)file to cause make to go look in the top directory. A simple
# convenience.
all: lib
$(MAKE) -C .. examples
lib:
$(MAKE) -C .. lib/libAria.so
%.so: ../lib/libAria.so %.cpp
$(MAKE) -C .. examples/$@
%: ../lib/libAria.so %.cpp
$(MAKE) -C .. examples/$@
%Static: ../lib/libAria.a %.cpp
$(MAKE) -C .. examples/$@
clean:
$(MAKE) -C .. cleanExamples
../lib/libAria.so: FORCE
$(MAKE) -C .. dirs lib/libAria.so
../lib/libAria.a: FORCE
$(MAKE) -C .. dirs lib/libAria.a
FORCE:
.PHONY: all FORCE clean lib
第二個Makefile是
LDLIBS = -lm
CXXFLAGS = -O3 -finline-functions -I. -I./qpoases/INCLUDE -I./qpoases/SRC
CFLAGS = -O3
CC = g++
OBJECTS = \
./qpoases/SRC/QProblemB.o \
./qpoases/SRC/Bounds.o \
./qpoases/SRC/Constraints.o \
./qpoases/SRC/SubjectTo.o \
./qpoases/SRC/Indexlist.o \
./qpoases/SRC/CyclingManager.o \
./qpoases/SRC/Utils.o \
./qpoases/SRC/MessageHandling.o \
./qpoases/solver.o \
integrator.o \
condensing.o \
gauss_newton_method.o
.PHONY: all
all: test libacado_exported_rti.a
test: ${OBJECTS} test.o
./qpoases/solver.o : ./qpoases/solver.hpp
integrator.o : acado.h
condensing.o : acado.h
gauss_newton_method.o : acado.h ./qpoases/solver.hpp
test.o : acado.h ./qpoases/solver.hpp
libacado_exported_rti.a: ${OBJECTS}
ar r $@ $?
${OBJECTS} : ./qpoases/solver.hpp
.PHONY : clean
clean :
-rm -f *.o *.a ./qpoases/SRC/*.o ./qpoases/SRC/*.a test
我檢查了所有與我的問題有關的stackoverflow問題,最接近我的情況是一個標題為問題的問題( 在一個目錄中有多個makefile );但是,這並不是我想要做的...
非常感謝 !
您為什么要合並源目錄? 我認為它們是出於某種原因而分開的。 相反,我將保留它們,並在它們上方的目錄中創建一個新的make文件,該文件將調用其下的每個子make文件-通過include或通過直接對每個makefile進行脫殼。 我不會僅僅為了使其更容易獲得繼承或進行任何工作而混用代碼。
順便說一句,這是為您提供的鏈接: 堆棧溢出向您展示如何
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.