CHECK_FUNCTION_EXISTS
怎么找不到clock_gettime
?
我在CMakeLists.txt
中使用以下代码:
include(CheckFunctionExists)
set(CMAKE_EXTRA_INCLUDE_FILES time.h)
CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME)
这是在我知道的clock_gettime
POSIX系统上。但我只是得到:
-- Looking for clock_gettime - not found
答案 0 :(得分:9)
因为在clock_gettime
中找到librt
,我们需要在进行检查时链接到CHECK_FUNCTION_EXISTS
(否则CMake将无法编译它生成的测试程序以测试函数是否存在)。
include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME)
无法做到这一点。而必须使用 CHECK_LIBRARY_EXISTS :
-- Looking for clock_gettime in rt - found
现在可以正常工作并输出:
clock_gettime
更新:在较新的glibc 2.17 + librt
已从libc
移至clock_gettime
。
因此,为了确保在所有系统上找到include(CheckLibraryExists)
CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" 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()
,您需要进行两次检查:
{{1}}