如果且仅当在配置脚本中启用库时,我希望在代码中使用它。
用户将首先运行配置脚本来编译程序,然后

./configure --enable-mylib
make

我需要这个--enable-mylib
在我的代码中变成一个布尔值和一个定义,以便我可以将其用作示例
#ifdef MYLIB
#include "mylib.h"
#endif
...
if(mylib_enabled()) {
  do_mylib_call();
}
...

这样做的标准方法是什么?

最佳答案

对于--enable-mylib的检查,您应该检查库,如果找到,您将拥有一个可以检查的HAVE_MYLIB宏。
在配置脚本中类似这样:

AC_ARG_ENABLE([mylib],
  [  --enable-mylib          enable the special "mylib" library],
  [if test $enableval = yes; then
     AC_CHECK_LIB(mylib, function_in_mylib)
     AC_CHECK_HEADER(mylib.h)
   fi])

在你的源文件里
#if HAVE_MYLIB_H
# include <mylib.h>
#endif

...

#if HAVE_MYLIB
function_in_mylib();
#endif

关于c - 仅在配置脚本中启用了库的情况下才使用库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21991549/

10-11 21:54