确保你的Makefile中使用了-I标志来指定头文件所在的目录。例如: makefile INCDIR = -I/path/to/your/headers CXXFLAGS += $(INCDIR) 验证头文件是否真的存在于指定的路径中: 确认你指定的头文件路径下确实存在你试图包含的头文件。你可以使用文件管理器或命令行工具(如ls或dir)来检查文件是否存在。 如果头文...
- $(INCDIR):获取头文件所在的目录的绝对路径。 可以在makefile中定义这些变量,例如: CURDIR := $(shell pwd) SRCDIR := $(CURDIR)/src INCDIR := $(CURDIR)/include 在上面的示例中,使用pwd命令获取当前目录的绝对路径,并将其赋值给变量CURDIR。然后通过拼接字符串的方式,定义SRCDIR和INCDIR变量。 这样,在...
#指定gcc头文件路径 INCDIR := $(patsubst %, -I%, $(incdirs)) #为.c文件指定搜索目录 vpath %.c $(srcdirs) #为.h文件指定搜索目录 vpath %.h $(incdirs) .PHONY: all clean objdir: @echo "create obj directory" -mkdir $(objdir) $(objdir)/%.o: %.c gcc -MD $(INCDIR) -c $<...
Makefile里面获取相对路径必须在pwd前面加shell,然后把shell pwd当一个变量来引用,书写形式是:$(shell pwd) INCDIR := $(shell pwd) //将shell pwd作为变量,通过 $(shell pwd)形式引用这个变量 # C预处理器的flag,flag就是编译器可选的选项 CPPFLAGS := -nostdlib -nostdinc -I$(INCDIR)/include //-nost...
CFLAGS := -I$(INCDIR) -c -Wall -g #LDFLAGS表示在编译的时候编译器的链接库选项 LDFLAGS := -L$(LIBDIR) -static -lpthread #wildcard函数,它有一个参数,功能是展开成一列所有符合由其参数描述的文件名,文件间以空格间隔 #以下命令表示:产生一个所有以".c"结尾的文件列表,然后存入变量SOURCES里。当然...
前言 该 Makefile 已经通过基于内核 Linux5.4 版本验证通过。 因为编写这通用驱动 Makefile 时遇到了头文件指定路径失败的问题。使用过 ccflags-y 、INCDIR 、EXTRA_CFLAGS 、-L 等等参数都无效。就是因为我使用了 $(shell pwd)。导致这些
{INCDIR} -DDEBUG ${BIN_TARGET}:${OBJ} $(CC) $(OBJ) -o $@ ${LIBDIR} -ljson -lcurl #利用Makefile自动推导功能和自动化变量,用一条语句实现同一个目录下多个源文件的编译 #根据多个源文件目录添加多个,注意不同目录下的源文件不能重名 ${DIR_OBJ}/%.o:${DIR_SRC0}/%.cpp $(CC) $(...
makefile编写---.a静态库的生成和调用,#.SUFFIXES:.c.oCc=gcc#OSA=/data/users/osaIncDir=-I.-I./Debug=-gCflags=-c$(DEBUG)Libs=-lpthreadLib_Dir=./#/data/users/osa/api/#PKIOBJ=PKITo...
$(CC) $(CFLAGS) -I$(INCDIR) -c -o $@ $< clean: rm -rf $(OBJDIR)/*.o $(EXECUTABLE) $(LIBRARY) 这个Makefile 描述了一个包含多个源文件的项目,其中包括了默认目标all、清理目标clean,以及两个生成目标:一个可执行文件和一个静态库。注意到这个 Makefile 中的变量和规则可以根据项目的结构和需求...
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ 执行make,遇到错误了~ gcc -c -o obj/hellomake.o hellomake.c -I../include Assembler messages: Fatal error: can't create obj/hellomake.o: No such file or directory makefile:18: recipe for target 'obj/hellomake.o' failed ...