繁体   English   中英

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

[英]Optional source code generation using Autotools (C/C++)?

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

谢谢你的帮助

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

我建议您在运行时执行此操作,这是建议的做法,例如C ++的API设计 ,非常推荐阅读:

bool isFuncXXXEnabled();
void funcxxx();

您的代码:

if (isFuncXXXEnabled()) {
}
else {
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM