【发布时间】:2013-08-08 16:17:11
【问题描述】:
当我练习时,我有一个练习路径。
在这个路径下,我有一个名为myInclude 的包含路径(这个文件夹我有一些有用的功能,我总是使用它。)
还有一个名为symbol_try的代码路径。我总是在symbol_try中添加新文件夹(里面有一个c文件和main函数)并编译它。
每次我都要在终端通过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 中的代码,所以我不想将其构建为库。
感谢您的帮助。
【问题讨论】: