clock_gettime
が見つかったのでlibrt
、チェックを行うときにリンクする必要があります (そうしないと、関数が存在するかどうかをテストするために CMake が生成するテスト プログラムのコンパイルに失敗するだけです)。
これは では不可能CHECK_FUNCTION_EXISTS
です。代わりにCHECK_LIBRARY_EXISTSを使用する必要があります:
include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_CLOCK_GETTIME)
これで動作し、出力されます:
-- Looking for clock_gettime in rt - found
更新: 新しい glibc 2.17+clock_gettime
では、 から に移動されlibrt
ましたlibc
。
したがって、すべてのシステムで確実に見つけるclock_gettime
には、次の 2 つのチェックを行う必要があります。
include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_CLOCK_GETTIME)
if (NOT HAVE_CLOCK_GETTIME)
set(CMAKE_EXTRA_INCLUDE_FILES time.h)
CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME)
SET(CMAKE_EXTRA_INCLUDE_FILES)
endif()