C++ 从不同的makefile编译和加载对象文件
我是makefiles新手,尝试编写一个类似这样的文件:C++ 从不同的makefile编译和加载对象文件,c++,makefile,C++,Makefile,我是makefiles新手,尝试编写一个类似这样的文件: folder_1 |---- makefile_1 |---- output_1 folder_2 |---- makefile_2 |---- output_2 makefile_1编译一些代码并在output_1文件夹内生成.o 我的目标是从makefile_2中调用makefile_1,并在文件夹_2 这是makefile_2的示例: target: obj_1.o obj_2.o $(CC) -
folder_1
|---- makefile_1
|---- output_1
folder_2
|---- makefile_2
|---- output_2
makefile_1
编译一些代码并在output_1
文件夹内生成.o
我的目标是从makefile_2
中调用makefile_1
,并在文件夹_2
这是makefile_2
的示例:
target: obj_1.o obj_2.o
$(CC) -I$(INCLUDE) obj_1.o obj_2.o -o target
obj_2.o: ...files...
$(CC) -I$(INCLUDE) -c ...files...
obj_1.o: //<--- how to make and call obj_1 from folder_1?
target:obj_1.o obj_2.o
$(CC)-I$(包括)obj_1.o obj_2.o-o目标
obj_2.o:…文件。。。
$(CC)-I$(INCLUDE)-c…文件。。。
obj_1.o://您可以通过使用我的库来实现这一点,GNU make
查看wiki并阅读基本概念,它解释了如何将一个makefile包含到另一个makefile中并添加构建依赖项,您的folder1
应该创建一个静态库。a
和floder2
应该使用该静态库来构建可执行文件obj_1.o
要驻留在哪里?在folder_1/output_1/
,或其他地方?可能通过make-C..\folder1
…但会出现一些问题:如果存在obj_1.o,这将不会检查对obj_1.o源的任何依赖项的更改。您可以将obj_1.o目标定义为“.PHONY”,但每次都会启动folder1的makefile。这些只是人们不喜欢使用子makefile的一些原因。