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

发布于 2024-12-27 00:06:06 字数 441 浏览 1 评论 0 原文

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

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

有人可以提供一些关于如何通过此 Makefile 和不同标志组合自动编译的提示吗?保存错误&在不同的错误日志中标记组合详细信息。

示例:

Error log for a particular Flag Combination:

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

谢谢。

Suppose I am having a Makefile with the following flags:

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

Can someone please give some hint on how to automate the Compilation with different flag combinations through this Makefile & saving the errors & Flag Combination details in different error logs.

Example:

Error log for a particular Flag Combination:

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

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

○闲身 2025-01-03 00:06:06

您必须为每个标志组合设置一个输出目录。因此,您必须:

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

相比之下,您有两种如何分派 make 的选项:

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

You have to set up an output directory for each flag combination. So you have to:

  • Create a makefile that will define the actual rules. The output files have to be placed in different directory than sources. You have two options to achieve that, either
    • use appropriate configurable prefixes to all paths or
    • use VPATH variable (than current directory is output and sources are searched in VPATH).
  • Create a makefile with appropriate setting for each directory, that will include the rules.

Than you have two options how to dispatch the make:

  1. Run each build separately, possibly having top-level makefile that will run each build as separate process (recursively), or
  2. define the rules with target-specific variable values and include them all from the top-level makefile. This will also require the rules to only be for files in particular directory, so you can't use VPATH and you'll need to either use patterns like $(out_dir)/%.o : %.c, or you need to use static-pattern rules which explicitly list the targets they apply to.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文