makefile文件包括在其他目录下的* .h文件 [英] makefile include *.h file in other directory
本文介绍了makefile文件包括在其他目录下的* .h文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于*的.o,* h文件和* .c文件都存储在不同的目录,我需要增加preFIX $(ODIR)或$(IDIR)每次我写的.o *或* .h文件中?
有没有一种优雅的方式做到这一点?
也许有些类似方式$(IDIR)/ {A.H,b.h,c.h}?
这是生成文件的示例:
GCC =海湾合作委员会
CFLAGS =
CFLAGS_DEBUG_STRICT = -Wall迂腐-ansi -ggdb -DDEBUG
CFLAGS_DEBUG = -Wall -ggdb -DDEBUG
LFLAGS =
SDIR = ../src
ODIR = OBJ
IDIR = ../include
INCLUDES =
LIDR = ../lib/
LIBS =
所有:keyword_match_test
keyword_match_test:$(ODIR)/keyword_match_test.o $(ODIR)/keyword_match.o
$(GCC)$(CFLAGS_DEBUG)-o $ @ $ +$(ODIR)/keyword_match_test.o:keyword_match_test.c $(IDIR)/keyword_match.h
$(GCC)$(CFLAGS_DEBUG)-c -o $ @ $< -I $(IDIR)$(ODIR)/keyword_match.o:$(SDIR)/keyword_match.c $(IDIR)/keyword_match.h $(IDIR)/global.h
$(GCC)$(CFLAGS_DEBUG)-c -o $ @ $< -I / usr / include目录/ MySQL的-I $(IDIR)
解决方案
在除了与明确地放在目标文件@macs建议,GNU make的VPATH指令可以帮助您:
VPATH%.H $(IDIR)
VPATH%的.o $(ODIR)$(ODIR)/keyword_match_test.o:keyword_match_test.c keyword_match.h
Since the *.o, *.h file and *.c files are stored in different directories, do I need add prefix $(ODIR) or $(IDIR) everytime I write a *.o or *.h file?
Is there a graceful way to do it?
Perhaps some way like $(IDIR)/{a.h, b.h, c.h}?
This is the sample of makefile:
GCC = gcc
CFLAGS =
CFLAGS_DEBUG_STRICT = -Wall pedantic -ansi -ggdb -DDEBUG
CFLAGS_DEBUG = -Wall -ggdb -DDEBUG
LFLAGS =
SDIR = ../src
ODIR = obj
IDIR = ../include
INCLUDES =
LIDR = ../lib/
LIBS =
all : keyword_match_test
keyword_match_test : $(ODIR)/keyword_match_test.o $(ODIR)/keyword_match.o
$(GCC) $(CFLAGS_DEBUG) -o $@ $+
$(ODIR)/keyword_match_test.o : keyword_match_test.c $(IDIR)/keyword_match.h
$(GCC) $(CFLAGS_DEBUG) -c -o $@ $< -I$(IDIR)
$(ODIR)/keyword_match.o : $(SDIR)/keyword_match.c $(IDIR)/keyword_match.h $(IDIR)/global.h
$(GCC) $(CFLAGS_DEBUG) -c -o $@ $< -I/usr/include/mysql -I$(IDIR)
解决方案
In addition to @macs suggestion with explicitely placed object files, GNU make's vpath directive can help you:
vpath %.h $(IDIR)
vpath %.o $(ODIR)
$(ODIR)/keyword_match_test.o : keyword_match_test.c keyword_match.h
这篇关于makefile文件包括在其他目录下的* .h文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文