簡體   English   中英

如何將兩個Makefile(每個構建具有特定環境變量的腳本)合並為一個Makefile?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM