【问题标题】:makefile for multiple .c files, same directory多个.c文件的makefile,同一目录
【发布时间】:2012-06-30 02:43:57
【问题描述】:

我需要为 4 个文件创建一个 makefile:q4.c、q3.c、q2.c、q1.c 这 4 个的 makefile 的格式是什么样的?我知道所有必要的标志,预处理、编译、汇编和清理,但是对于 4 个程序,文件的格式会是什么样子?

旁注:所有程序都在同一个目录中。

感谢您的帮助 - Dave L

【问题讨论】:

  • 应该将每个.c 文件编译成一个单独的程序,还是应该将它们全部组合成一个程序,还是什么?
  • 它们应该被编译成一个单独的程序,但是只有一个makefile。
  • 欢迎来到 Stack Overflow! What have you tried?

标签: c gcc compilation makefile


【解决方案1】:

Makefile 是一种非常全面和灵活的方式来描述构建过程及其操作、依赖项等。有很多可能的编写方式,因此您的问题永远不会有一个简单的单一答案。例如,对于您的简单案例,您的 Makefile 可能如下所示:

BIN = q1 q2 q3 q4

all: $(BIN)

clean:
    $(RM) $(BIN)

如果您经常添加和删除源文件,并且每个文件都应该编译成一个独立的可执行文件,它也可能看起来像这样:

SRC = $(wildcard *.c)
BIN = $(patsubst %.c,%,$(SRC))

all: $(BIN)

clean:
    $(RM) $(BIN)

根据项目的规模和要求,它可能会变得越来越复杂。

我建议你从上面的例子开始,阅读 Make documentation 以了解它可以做什么。

另外,Make 是相当古老、复杂的技术。掌握它需要大量时间和练习,而您的反应却很少。有替代方案。我个人推荐CMake - 它更容易,可以为您生成构建脚本的更高级别的系统。它支持 Makefile、Xcode 等等。看看肯定更糟。

【讨论】:

    【解决方案2】:

    如果您使用的是 gnu make,并且每个标志都相同:

    CFLAGS=-ffoo -O2 -fguess-at-hard-math
    all: q1 q2 q3 q4
    

    否则,您可以明确指定每个

    all: q1 q2 q3 q4
    q1: q1.c
        gcc -o q1 q1.c
    q2: q2.c 
        gcc -o q2 -fq2-flags q2.c
    ...
    

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 2011-05-05
      • 2016-03-04
      • 2021-12-09
      相关资源
      最近更新 更多