尽管存在符号,但 CMake 中的符号查找失败



我正在尝试使用 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)

虽然getaddrinfo_a是在netdb.h中定义的(假设定义了_GNU_SOURCE),但CMake找不到它:

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

知道我做错了什么吗?

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

list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
list(APPEND CMAKE_REQUIRED_LIBRARIES anl)
check_symbol_exists(getaddrinfo netdb.h HAVE_GETADDRINFO_A)

最新更新