簡體   English   中英

autoconf:如何檢查#define的存在

[英]autoconf: how to check for presence of #define

我正在編寫一個使用boost::asio訪問串行端口的程序。 根據文檔,定義BOOST_ASIO_HAS_SERIAL_PORT宏后即可使用串行端口支持。 由於這是一項要求,因此如果未定義宏,我希望我的配置腳本中止。

我以為可以通過以下方式實現此目的:

AC_MSG_CHECKING([for serial port support in boost::asio])
AC_EGREP_CPP(yes_have_boost_asio_serial, [
#include <boost/asio.hpp>
#ifdef BOOST_ASIO_HAS_SERIAL_PORT
yes_have_boost_asio_serial
#endif
], [
    AC_MSG_RESULT([yes])
], [
    AC_MSG_RESULT([no])
    AC_ERROR([boost::asio must be compiled with serial port support enabled])
])

不幸的是,當我把它放進去時,生成配置腳本時出現一個奇怪的錯誤:

configure.ac:23: error: possibly undefined macro: BOOST_ASIO_HAS_SERIAL_PORT
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.

為什么autoconf在我的代碼中看到宏? m4_pattern_allow上的文檔或多或少說明如果必須使用它,出現了問題,那么我做錯了什么?

我最終只使用了m4_pattern_allow ,我想它與全大寫符號有關,就像autoconf應該處理的一樣?

m4_pattern_allow([BOOST_ASIO_HAS_SERIAL_PORT])

AC_MSG_CHECKING([for serial port support in boost::asio])
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM