- 论坛徽章:
- 0
|
各位,现在有个项目是这样
/home/lusa 是用户的家目录
目录下有 appcom 和 src 目录,
src是项目的源文件,包括 *flow.gcc *.cpp *.pc *.h 四类,其中 *.gcc 是Makefile文件,其他是源文件
appcom 是输出物的目录。单个文件编译时,可以在 src 先如下操作
make -f userflow.gcc ,就会在 appcom 下得到 libs_userflow.10.so
但是 src 下的Makefile有很多,因为有很多模块,我现在希望能够写一个大的Makefile,执行时自动检测
如果对应的 appcom 下的 so文件比 src 中的 *flow.gcc 文件过时,那么就进行编译,但是不知道多目标的通配应该怎么
来完成。。
比如用户上传了 system 模块的四个文件 systemflow.gcc , systemflow.gcc systemflow.pc systemflow.h,因为是新上传,那么文件的时间比输出
的 appcom 下的 so 的时间新,那么就可以 make ,自动调用 make -f systemflow.gcc
我不是希望全自动,只是希望不需要每次上传了新的代码,都要执行文件名来编译,希望有一个通配的解决方案?
请各位大神指教,有疑问我会及时回答 
- #obj扩展名定义$TO
- FBASE_HOME = ..
- SRCDIR = $(FBASE_HOME)/src
- OUTDIR = $(FBASE_HOME)/appcom
- #(-Dxxx should be added to DEFS macro):
- DEFS =-D OS_UNIX
- SRCS=$(wildcard *.gcc)
- OBJS=$(patsubst %.gcc, $(OUTDIR)/lib%.$(ORA_VER).so, $(SRCS))
- .PHONY: all new clean
- new: $(OBJS)
- $(OUTDIR)/lib%.$(ORA_VER).so: %.gcc
- include $^
- cleanobj:
- rm -fr *.o core *~ tp*
复制代码 |
|