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)

getaddrinfo_a は netdb.h で定義されていますが (_GNU_SOURCE が定義されている場合)、CMake はそれを見つけることができません。

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

私は何が間違っているのですか?

4

1 に答える 1

4

getaddrinfo_aの man ページによると、関数は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 に答える