makefile如何根据文件名进行条件编译?
$(DIRDEST)/objs.$(TYPEGEN)/Group0_%.itest.o:%.c@mkdir-p$(DIRDEST)/objs.$(TYPEGEN)@ech...
$(DIRDEST)/objs.$(TYPEGEN)/Group0_%.itest.o: %.c
@mkdir -p $(DIRDEST)/objs.$(TYPEGEN)
@echo Compiling $<
@$(CC) $(CCFLAGS) $(INCPATHFLAG) $< -o $@
---------------------------------------------
这段代码中,%.c是所有依赖文件(包含完整路径):
/node/test/stub/scen/src/SCEN_fail.c
/node/test/stub/scen/src/SCEN_collision.c
........
/node/sw/common/src/lib_list.c
/node/sw/common/src/lib_math.c
...........
其中,一部分文件在/node/test/...文件夹下面,一部分在/node/sw/...文件夹下面,能不能用不同的编译选项分别编译这两部分文件?
我试了用条件判断,通过判断文件名中是否包含"test"字符串从而进行条件编译:
$(DIRDEST)/objs.$(TYPEGEN)/Group0_%.itest.o: %.c
@mkdir -p $(DIRDEST)/objs.$(TYPEGEN)
ifeq (,$(findstring test,$<))
@echo Compiling test$<
@$(CC) $(CCFLAGS) -finstrument-functions $(INCPATHFLAG) $< -o $@
else
@echo Compiling sw$<
@$(CC) $(CCFLAGS) $(INCPATHFLAG) $< -o $@
endif
但是好像永远都只进入第一个条件,请教高手如何实现上面提到的按文件名编译呢? 展开
@mkdir -p $(DIRDEST)/objs.$(TYPEGEN)
@echo Compiling $<
@$(CC) $(CCFLAGS) $(INCPATHFLAG) $< -o $@
---------------------------------------------
这段代码中,%.c是所有依赖文件(包含完整路径):
/node/test/stub/scen/src/SCEN_fail.c
/node/test/stub/scen/src/SCEN_collision.c
........
/node/sw/common/src/lib_list.c
/node/sw/common/src/lib_math.c
...........
其中,一部分文件在/node/test/...文件夹下面,一部分在/node/sw/...文件夹下面,能不能用不同的编译选项分别编译这两部分文件?
我试了用条件判断,通过判断文件名中是否包含"test"字符串从而进行条件编译:
$(DIRDEST)/objs.$(TYPEGEN)/Group0_%.itest.o: %.c
@mkdir -p $(DIRDEST)/objs.$(TYPEGEN)
ifeq (,$(findstring test,$<))
@echo Compiling test$<
@$(CC) $(CCFLAGS) -finstrument-functions $(INCPATHFLAG) $< -o $@
else
@echo Compiling sw$<
@$(CC) $(CCFLAGS) $(INCPATHFLAG) $< -o $@
endif
但是好像永远都只进入第一个条件,请教高手如何实现上面提到的按文件名编译呢? 展开
1个回答
2014-12-25
展开全部
自行编写的在Linux下的编译文件。其作用如下:
makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询