3

我正在尝试使用 CMake 检查符号 getaddrinfo_a 是否存在:

list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
check_symbol_exists(getaddrinfo_a netdb.h HAVE_GETADDRINFO_A)
list(REMOVE_ITEM CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)

虽然在 netdb.h 中定义了 getaddrinfo_a(假设 _GNU_SOURCE 已定义),但 CMake 无法找到它:

-- Looking for getaddrinfo_a
-- Looking for getaddrinfo_a - not found.

知道我在做什么错吗?

4

1 回答 1

4

根据getaddrinfo_a手册页,该功能需要libanl在链接时。CMAKE_REQUIRED_LIBRARIES在调用之前尝试设置check_symbol_exists

list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
list(APPEND CMAKE_REQUIRED_LIBRARIES anl)
check_symbol_exists(getaddrinfo netdb.h HAVE_GETADDRINFO_A)
于 2012-11-25T09:09:02.623 回答