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

时间:2012-11-24 13:41:46

标签: cmake lookup symbols

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

知道我做错了什么吗?

1 个答案:

答案 0 :(得分:3)

根据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)