4

我目前正在编写小型简单的 C 程序。到目前为止,我的 Makefile 文件包含以下内容:

program_name:  
    clang -o program_name program_name.c

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

4

3 回答 3

5

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

CC=clang
program_name: some.h

不需要指定对program_name.oor的依赖program_name.c,因为它们是隐含的。也无需明确给出规则,因为您使用的是默认规则。但是,确实需要说明对头文件的依赖关系。

于 2012-12-12T21:06:15.443 回答
1

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

于 2012-12-12T21:00:32.297 回答
1

这就是我所需要的吗?

不。

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

通常,您应该,特别是如果您使用自定义数据类型(即使不是:如果您平台上的 ABI/调用约定包含黑魔法,则函数签名的更改可能会破坏整个程序)。

我使用的模板通常是:

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 $@ $^
于 2012-12-12T21:09:11.077 回答