请问一下如何实现“选择性编译”?

发布于 2022-09-11 17:27:46 字数 537 浏览 21 评论 0

现在有一个C工程,假设只有main.cpattern.h文件,在后者中定义了一些标准化的接口

想实现一个功能:将pattern.h中定义的接口提供给用户开发,最终将会有很多包含该头文件的c文件。

比如 A同学写一个 patternA.c 来实现这个接口,

同理 B同学写一个 patternB.c 来实现这个接口,

这两个c文件都有#include "pattern.h"并且会同时存在于一个文件目录下。

最终在main.c 中 或者makefile 中,如何实现选择其中之一来进行编译链接?

比如修改main.c 中的宏定义 或者 运行 make patternA or make patternB

最好可以通过后者实现,这样可以避免在编译过程中需要用户修改源代码

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

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

发布评论

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

评论(1

北笙凉宸 2022-09-18 17:27:46

Makefile 示例

all: patternA patternB

patternA: main.c patternA.c pattern.h
    gcc -o $@ $^

patternB: main.c patternB.c pattern.h
    gcc -o $@ $^    

那么

  1. makemake all 同时编译 patternA 和 patternB
  2. make patternA 编译 patternA
  3. make patternB 编译 patternB
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文