在makefile中,可以使用通配符和变量来将目录路径粘贴到文件列表中的每个文件。
首先,可以使用通配符来匹配指定目录下的所有文件,例如:
SOURCES := $(wildcard path/to/directory/*.c)
上述代码中,path/to/directory/*.c
表示匹配path/to/directory
目录下的所有以.c
为后缀的文件,并将匹配到的文件列表赋值给变量SOURCES
。
接下来,可以使用变量来将目录路径粘贴到文件列表中的每个文件。假设目录路径为path/to/directory/
,可以使用替换函数$(patsubst pattern,replacement,text)
来替换文件列表中的文件名,例如:
OBJECTS := $(patsubst path/to/directory/%, path/to/directory/objects/%, $(SOURCES))
上述代码中,path/to/directory/%
表示匹配path/to/directory/
目录下的任意文件,path/to/directory/objects/%
表示替换后的文件路径,$(SOURCES)
表示需要替换的文件列表。通过替换函数,将文件列表中的文件名替换为带有目录路径的文件名,并将替换后的文件列表赋值给变量OBJECTS
。
最后,可以在makefile中使用变量OBJECTS
来代表粘贴了目录路径的文件列表,例如:
all: $(OBJECTS)
gcc -o output $(OBJECTS)
$(OBJECTS): path/to/directory/objects/%.o : path/to/directory/%.c
gcc -c $< -o $@
上述代码中,$(OBJECTS)
表示所有粘贴了目录路径的文件列表,$(OBJECTS): path/to/directory/objects/%.o : path/to/directory/%.c
表示规则,将path/to/directory/objects/%.o
作为目标文件,path/to/directory/%.c
作为依赖文件,通过gcc编译器将依赖文件编译为目标文件。
需要注意的是,上述代码中的目录路径和文件名需要根据实际情况进行修改。
推荐的腾讯云相关产品:无
参考链接:
领取专属 10元无门槛券
手把手带您无忧上云