我正在尝试创建一个makefile,该makefile使用来自不同目录中的txt文件的输入来执行。我的苦恼是这样的:
project/misc/input.txt
project/programms/findlines.c
到目前为止,我的makefile是这样的:
# #Paths to input files
words-10= ../../misc/words
#compiler used
CC = gcc
#Files .o
OBJS = find_lines.o words-10
#Executable programm
EXEC = find_lines
#Parameters
ARGS =
$(EXEC): $(OBJS)
$(CC) $(OBJS) -o $(EXEC) $(LDFLAGS)
clean:
rm -f $(OBJS) $(EXEC)
run:
time ./find_lines < words-10
valgrind:
valgrind ./find_lines < words-10
似乎编译器没有找到输入文件,并且投射了错误“不存在这样的文件”
答案 0 :(得分:2)
words-10
的变量替换应该与makefile中其他变量(例如CC
,OBJS
和EXEC
)相同:您将要替换对words-10
与$(words-10)
或${words-10}
。
此外,您可能不希望它包含在OBJS
中,因为它看起来不像您要传递给gcc
进行链接的文件。
# #Paths to input files
words-10= ../../misc/words
#compiler used
CC = gcc
#Files .o
OBJS = find_lines.o
#Executable programm
EXEC = find_lines
#Parameters
ARGS =
$(EXEC): $(OBJS)
$(CC) $(OBJS) -o $(EXEC) $(LDFLAGS)
clean:
rm -f $(OBJS) $(EXEC)
run:
time ./find_lines < $(words-10)
valgrind:
valgrind ./find_lines < $(words-10)
答案 1 :(得分:0)
fileswords-10 = ../../misc/words#输入路径
CC =使用了gcc #compiler
OBJS = find_lines.o#文件.o
EXEC = find_lines#可执行程序
ARGS = $(words-10)/ words-10 #Parameters
$(EXEC):$(OBJS) $(CC)$(OBJS)-o $(EXEC)
干净: rm -f $(OBJS)$(EXEC)
运行: 时间./$(EXEC)<$(ARGS)
valgrind: valgrind ./find_lines <$(ARGS)