Попытка запустить Makefile из командной строки - '.'не признается - PullRequest
0 голосов
/ 03 октября 2018

Мне нужна помощь с этим.Я нахожусь на Windows 10, и я пытаюсь запустить Makefile, чтобы собрать небольшую C-программу.Я не писал Makefile, он прописан учителем для тестирования (мы не можем написать наши собственные тесты по какой-то причине).

Это Makefile полностью:

LIB=./lib/mylist.c

TEST1=func_test1
TEST2=func_test2
TEST3=func_test3
TEST4=func_test4
TEST5=func_test5

TEST1_EXE=$(TEST1).out
TEST1_SRC=./tests/$(TEST1).c
TEST2_EXE=func_test2.out
TEST2_SRC=./tests/func_test2.c
TEST3_EXE=func_test3.out
TEST3_SRC=./tests/func_test3.c
TEST4_EXE=func_test4.out
TEST4_SRC=./tests/func_test4.c
TEST5_EXE=func_test5.out
TEST5_SRC=./tests/func_test5.c

all:
    gcc -std=c99 -o $(TEST1_EXE) $(TEST1_SRC) $(LIB) -I./include/
    gcc -std=c99 -o $(TEST2_EXE) $(TEST2_SRC) $(LIB) -I./include/
    gcc -std=c99 -o $(TEST3_EXE) $(TEST3_SRC) $(LIB) -I./include/
    gcc -std=c99 -o $(TEST4_EXE) $(TEST4_SRC) $(LIB) -I./include/
    gcc -std=c99 -o $(TEST5_EXE) $(TEST5_SRC) $(LIB) -I./include/

test:
    ./$(TEST1_EXE) > $(TEST1).youranswer
    diff $(TEST1).youranswer $(TEST1).answer >> scoring_result
    ./$(TEST2_EXE) > $(TEST2).youranswer
    diff $(TEST2).youranswer $(TEST2).answer >> scoring_result
    ./$(TEST3_EXE) > $(TEST3).youranswer
    diff $(TEST3).youranswer $(TEST3).answer >> scoring_result
    ./$(TEST4_EXE) > $(TEST4).youranswer
    diff $(TEST4).youranswer $(TEST4).answer >> scoring_result
    ./$(TEST5_EXE) > $(TEST5).youranswer
    diff $(TEST5).youranswer $(TEST5).answer >> scoring_result

Итак, чтобы быть ясным, я не написал это.Это должно быть функционально.

В любом случае, я открываю cmd, захожу в каталог, говорю «make», и похоже, что он работает.Но когда я пишу «make test», опять-таки по указанию учителя, чтобы запустить тесты, я получаю следующий ответ от cmd:

./func_test1.out > func_test1.youranswer
'.' is not recognized as an internal or external command, operable program or batch file.

Так что это, вероятно, отсутствующая переменная пути (были проблемы с теми).Но где в мире я нахожу папку «.»Команда / лексема находится?

1 Ответ

0 голосов
/ 03 октября 2018

Этот Makefile был написан для Unix-подобной оболочки, а не cmd.В частности, cmd требуется

.\func_test1.out > func_test1.youranswer

(т. Е. Обратный слеш \, а не слэш * 1005).

...