You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Autoconf的AC_CHECK_HEADERS中直接指定宏检测spdlog头文件?

在Autoconf中检测需预定义宏的spdlog头文件

你可以用两种简便方法,不用新建头文件就能让Autoconf正确检测spdlog头文件:

方法一:临时修改CXXFLAGS添加宏定义

在检测头文件前后临时调整编译参数,给测试代码加上SPDLOG_FMT_EXTERNAL宏:

# 保存当前编译参数
save_CXXFLAGS="$CXXFLAGS"
# 追加宏定义到编译参数
CXXFLAGS="$CXXFLAGS -DSPDLOG_FMT_EXTERNAL"
# 正常检测头文件
AC_CHECK_HEADERS([spdlog/spdlog.h], [], [], [
  # 若spdlog依赖其他前置头,可在此添加,比如#include <cstddef>之类,一般不需要
])
# 恢复原有编译参数
CXXFLAGS="$save_CXXFLAGS"

方法二:用AC_COMPILE_IFELSE直接写带宏的测试代码

这种方式更直观,直接在测试代码里定义宏,无需修改全局编译参数:

AC_MSG_CHECKING([for spdlog/spdlog.h requiring SPDLOG_FMT_EXTERNAL])
AC_COMPILE_IFELSE(
  [AC_LANG_SOURCE([[
#define SPDLOG_FMT_EXTERNAL
#include <spdlog/spdlog.h>
int main() { return 0; }
  ]])],
  [AC_MSG_RESULT([yes])
   AC_DEFINE([HAVE_SPDLOG_H], [1], [Define if spdlog is usable with SPDLOG_FMT_EXTERNAL])],
  [AC_MSG_RESULT([no])]
)

两种方法都能让Autoconf正确编译测试代码,识别spdlog头文件的可用性,完全不需要额外创建头文件。

内容的提问来源于stack exchange,提问作者Zenul_Abidin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:20:27