当我练习时,我有一个练习路径。
在这个路径下,我有一个名为的包含路径myInclude
(我有一些有用的功能是这个文件夹,我总是使用它。)
还有一个名为symbol_try
.I 的代码路径,我总是在其中添加新文件夹(其中包含 ac 文件和 main 函数)symbol_try
并编译它。
每次我必须在终端中通过 gcc 编译它。这是一项无聊的工作,所以我编写了一个 Makefile。
这是一个例子:
练习路径中的主 Makefile:
FOBJS=
include myInclude/Rule.mk
include symbol_try/codeList_13.1/Rule.mk
symbol:$(FOBJS) <==What exactly I what . A executable file.
gcc -o symbol $(FOBJS) -pthread -lpthread
subsystem:
cd myInclude/ && $(MAKE)
cd symbol_try/codeList_13.1/ &&$(MAKE)
clean:
rm -rf symbol
在 myInclude/Rule.mk
FOBJS+=myInclude/otherFunction.o myInclude/error.o \
myInclude/unit.o myInclude/unitTest.o\
在 symbol_try/codeList_13.1/Rule.mk
FOBJS+=symbol_try/codeList_13.1/codeList_13.1.o
在 myInclude/Makefile 中:
OBJS=otherFunction.o error.o unit.o unitTest.o
ALL:$(OBJS)
.PHONY:ALL
$(OBJS):%.o:%.c
gcc -c $< -o $@
clean :
otherFunction.o error.o unit.o
在 symbol_try/codeList_13.1/Makefile 中:
codeList_13.1.o:codeList_13.1.c
gcc -c codeList_13.1.c
好吧,那可以工作。但正如您所见,我必须为每个文件夹编写一个 Rule.mk(初始化 FOBJS)和一个 Makefile。
我是 make 的新手,我想找到一种更简洁的方法,我只需要为每个文件夹和一个主 Makefile 编写一个 Makefile。没有 Rule.mk 了。
PS:我总是更改 myInclude 中的代码,所以我不想将其构建为库。
谢谢你的帮助。