如何将两个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中,但这不起作用。。。
我认为这是有用的张贴我的两个Makefiles
这是第一个
# 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文件,该文件调用它下面的每个sub-make文件——通过include或直接对每个makefile进行炮击。我不会仅仅为了让继承或其他工作变得"更容易"而混合代码。
顺便说一句,这里有一个链接:Stack Overflow向您展示了
相关文章:
- 枚举环境变量的惯用C++14/C++17方法
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 定义C++新的环境变量并在 bat 文件中使用它
- docker 构建失败:无法设置环境变量
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- C++环境变量
- 在编译时为运行时设置环境变量
- 如何使用可视化代码和平台IO将环境变量注入CPP文件?
- 访问 PlatformIO 中的外部环境变量
- WSL 看不到环境变量
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 注册 TBB 的环境变量
- 如何设置Qt应用程序以使用类Unix系统的实际环境变量?
- CMake 看不到SDL2_PATH环境变量 (Windows)
- 跨语言共享环境变量
- 使用 Code::Blocks、plink 和 makefile 进行远程编译时无法访问环境变量
- Makefile.am /配置.ac条件环境变量检查
- C++makefile的Netbeans环境变量
- 如何将两个Makefile(每个生成的脚本都设置了特定的环境变量)合并到一个Makefile中
- 当环境变量发生变化时,让基于makefile的cmake项目自动运行make-rebuild_cache