【发布时间】:2018-05-30 19:10:25
【问题描述】:
我正在尝试重新组织某人的代码,但我似乎碰壁了。
我在fnc.c 中有一个函数int fnc(),由main1.c 或main2.c 调用。使用 makefile 从main1.c 或main2.c 编译可执行文件:
main1: main1.o fnc.o
gcc main1.o fnc.o -o main1.x
main2: main2.o fnc.o
gcc main2.o fnc.o -o main2.x
main1.o: main1.c
gcc -c main1.c
main2.o: main2.c
gcc -c main2.c
fnc.o:
gcc -c fnc.c
唯一的问题是,fnc.c的序言中要包含两个头文件header1.h和header2.h取决于编译的是main1.x还是main2.x:
#include "header1.h"
int fnc(){
// do stuff
}
是否可以根据make main1 或make main2 的类型来选择要加载的标头?
【问题讨论】:
-
将对应的定义通过
-D传递给编译器。并在源代码中检查#ifdef。 -
如果你必须单独重新编译
fnc.c,为什么还要单独编译? -
@melpomene 如何在不编译
fnc.c的情况下做到这一点?
标签: c makefile header-files code-organization