2012-03-28 84 views
1

嗨,大家好我想创建一个简单的make文件并在cygwin中执行。 这是该文件的内容这个make文件有什么问题?

test: test.c 
     gcc -c test.c -O3 -Wall -I. 
test1: test1.c 
       gcc -c test1.c -O3 -Wall -I. 

当我执行这个只有第一个文件是越来越编译,而不是第二个。任何人都可以解释为什么和什么是正确的方式?

回答

6

它看起来像你的缩进是有点混淆。这些行开头的空格应该是单个制表符。

另外:

默认情况下,与第一目标

,如果你要编译的第二个文件,您将需要在命令行中键入make test1指定目标开始。

这也是常见的添加一个名为all目标。您可以在文件顶部添加以下内容:

all: test test1 
+0

试图用单一的标签仍然没有工作 – karthick 2012-03-28 10:58:39

+0

@karthick:您是否尝试过做'让test1'?你使用什么命令? – 2012-03-28 11:03:37

+0

我只是打字make。现在只有我发现我需要指定目录或全部包含并提及目标。谢谢马克。 – karthick 2012-03-28 11:06:24

0

尝试将第二种情况的前导空格与第一种情况的匹配。让是好笑正确的缩进

+0

尝试,仍然没有工作 – karthick 2012-03-28 11:00:10

+0

什么是错误提出的是给?有一个吗? – Attila 2012-03-28 11:03:48

+0

你打电话给你怎么样?你可能想看看Mark Byers说的关于指定目标 – Attila 2012-03-28 11:05:03

0

你就忘记了-o标志:

test1: test1.c 
     cc -O3 -Wall -I. -o test1 test1.c 

甚至更​​好:

test1: test1.c 
     cc -O3 -Wall -I. -o [email protected] $? 

或者更短:(信任的内置宏)

CFLAGS += -O3 -Wall -I. 

test1: test1.c 

注:我故意省略测试:test.c部分。命名程序test是混淆的秘诀。