Makefile的正确标准是什么?

时间:2012-12-12 20:55:13

标签: c makefile

我目前正在编写小型简单的C程序。截至目前,我的Makefiles包含一些文字:

program_name:  
    clang -o program_name program_name.c

这就是我需要的吗?我不确定是否需要在.o和.h文件之间建立依赖关系,即使它们不一定存在于我的项目中。

3 个答案:

答案 0 :(得分:5)

你工作太辛苦了。您应该将Makefile简化为2行:

CC=clang
program_name: some.h

无需指定对program_name.oprogram_name.c的依赖关系,因为这些是隐含的。由于您使用的是默认规则,因此也无需明确指定规则。但是,确实需要拼写对头文件的依赖性。

答案 1 :(得分:1)

我自己使用GNU Make。不确定你在用什么。对于GNU Make,请参阅:

答案 2 :(得分:1)

  

这就是我需要的吗?

没有

  

我不确定是否需要在.o和.h文件之间建立依赖关系

一般情况下,您应该,特别是如果您使用的是自定义数据类型(即使不是这样:如果您平台上的ABI /调用约定由黑魔法组成,则函数签名中的更改可能会破坏整个程序)。 / p>

我正在使用的模板通常是:

CC = gcc
LD = $(CC)
CFLAGS = -c -Wall
LDFLAGS = -lwhatever -lfoo -lbar

TARGET = myprog
OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))

all: $(TARGET)

$(TARGET): $(OBJECTS)
        $(LD) $(LDFLAGS) -o $@ $^

%.c: %.h

%.o: %.c
        $(CC) $(CFLAGS) -o $@ $^