如何在C程序中使用来自另一个目录的输入txt文件制作文件

时间:2020-03-31 15:47:44

标签: c makefile directory

我正在尝试创建一个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

似乎编译器没有找到输入文件,并且投射了错误“不存在这样的文件”

2 个答案:

答案 0 :(得分:2)

words-10的变量替换应该与makefile中其他变量(例如CCOBJSEXEC)相同:您将要替换对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)