如何通过单个Makefile自动使用不同的标志组合进行代码编译

时间:2012-01-16 09:17:04

标签: c gcc compilation makefile

假设我有一个带有以下标志的Makefile:

CFLAGS+=FLAG1
.............
CFLAGS+=FLAG2
.............
CFLAGS+=FLAG3
.............
CFLAGS+=FLAG4
.............
CFLAGS+=FLAG5

有人可以通过这个Makefile&amp ;;提供一些关于如何使用不同标志组合自动化编译的提示。保存错误&标记组合详细信息在不同的错误日志中。

示例:

Error log for a particular Flag Combination:

Combination: FLAG1 FLAG3 FLAG5
errors       ................. (may be blank as well).

感谢。

1 个答案:

答案 0 :(得分:1)

您必须为每个标志组合设置输出目录。所以你必须:

  • 创建一个定义实际规则的makefile。输出文件必须放在与源不同的目录中。您有两种方法可以实现这一目标
    • 对所有路径使用适当的可配置前缀或
    • 使用VPATH变量(输出当前目录,并在VPATH中搜索来源。)
  • 为每个目录创建一个包含适当设置的makefile,其中包含规则。

比你有两个选择如何发送make:

  1. 单独运行每个构建,可能具有顶级makefile,将每个构建作为单独的进程运行(递归),或
  2. 使用target-specific variable values定义规则,并将它们全部包含在顶级makefile中。这还要求规则仅适用于特定目录中的文件,因此您无法使用VPATH,并且您需要使用$(out_dir)/%.o : %.c之类的模式,或者您需要使用{{3明确列出它们适用的目标。