Как сделать файл в c программе с входным TXT-файлом из другого каталога - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь создать make-файл, который выполняется с вводом из txt-файла в другом каталоге. Моя директория выглядит так:

project/misc/input.txt
project/programms/findlines.c

Мой make-файл до сих пор выглядит примерно так:

# #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 ]

2 голосов
/ 31 марта 2020

Подстановка переменной для words-10 должна быть такой же, как и для других переменных в вашем make-файле, таких как 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)
0 голосов
/ 31 марта 2020

РЕДАКТИРОВАТЬ: Вот решение, наконец, спасибо всем за вашу помощь!

Пути к входным файлам

words-10 = ../../misc/words

используется компилятор

CC = g cc

Файлы .o

OB JS = find_lines.o

Исполняемая программа

EXE C = find_lines

Параметры

ARGS = $ (words-10) / words-10

$ (EXE C) : $ (OB JS) $ (CC) $ (OB JS) -o $ (EXE C)

clean: rm -f $ (OB JS) $ ( EXE C)

run: time ./$(EXEC) <$ (ARGS) </p>

valgrind: valgrind ./find_lines

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...