使用Autotools(C / C ++)生成可选的源代码?

时间:2014-07-24 07:41:46

标签: c++ c makefile autotools

我有一个名为api.h的头文件,其中包含我的库的公共函数。我希望仅当用户使用void func_xxx();启用函数api.h时,才会在./configure --enable-xxx中声明该函数。这可能吗?理想情况下,我不想使用#ifdef吗?我知道如何在我的--enable-xxx脚本中实现configure.ac标志,但如果使用api.h,我不知道如何将函数声明添加到--enable-xxx

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您想要实现的并不是一种好的做法,因为正如您所提到的,您需要#if预处理器宏,将config.h拖到公共接口,因此必须安装它。配置文件不是要安装的。

我建议你在运行时这样做,这是建议在像API design for C++这样的书中练习,顺便说一句,这是一个非常推荐的阅读:

bool isFuncXXXEnabled();
void funcxxx();

您的代码:

if (isFuncXXXEnabled()) {
}
else {
}

在.cpp文件中,您可以禁用函数体,因为`config.h不会在公共接口中公开。