尝试从命令行 运行 Makefile - '.'不被认可
Trying to run a Makefile from the command line - '.' is not recognised
我需要一些帮助。我在 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.
所以它可能是缺少路径变量(我一直遇到这些问题)。但是我在世界上哪里可以找到“。”的文件夹?命令/词素位于?
Makefile 是为类 unix shell 编写的,而不是 cmd。特别是 cmd 需要
.\func_test1.out > func_test1.youranswer
(即 \
反斜杠,而不是 /
斜杠)。
我需要一些帮助。我在 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.
所以它可能是缺少路径变量(我一直遇到这些问题)。但是我在世界上哪里可以找到“。”的文件夹?命令/词素位于?
Makefile 是为类 unix shell 编写的,而不是 cmd。特别是 cmd 需要
.\func_test1.out > func_test1.youranswer
(即 \
反斜杠,而不是 /
斜杠)。