0

我有两个不同的目录,有两个不同的 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)的问题;但是,这并不是我想要做的......

非常感谢 !

4

1 回答 1

0

为什么要合并源目录?我认为他们分开是有原因的。相反,我将保留它们并在它们上方的目录中创建一个新的 make 文件,该文件调用它下面的每个子 make 文件 - 通过包含或通过直接对每个 makefile 进行脱壳。我不会为了让继承或任何工作“更容易”而混合代码。

顺便说一句,这是给你的链接:Stack Overflow 向你展示了如何

于 2013-02-09T00:39:25.150 回答