Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从不同的makefile编译和加载对象文件_C++_Makefile - Fatal编程技术网

C++ 从不同的makefile编译和加载对象文件

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) -

我是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) -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的一些原因。