H5W3
当前位置:H5W3 > 其他技术问题 > 正文

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

现在有一个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

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

回答:

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

本文地址:H5W3 » 请问一下如何实现“选择性编译”?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址