繁体   English   中英

检查time.h / sys / time.h compatibilitybilty

[英]Check for time.h / sys/time.h compatibilty

我目前正在将一个autotools项目移植到CMake,它使用AC_HEADER_TIME autotools宏来检查我是否可以同时包含time.hsys/time.h

如何用CMake完成?

这不是具体的时间测试,但是对于如何做这类事情的例子,你可以从BRL-CAD中查看这个例子:

http://sourceforge.net/p/brlcad/code/HEAD/tree/brlcad/trunk/misc/CMake/test_srcs/sys_wait_test.c

然后使用该代码在CMake中进行测试:

CHECK_C_SOURCE_RUNS(${CMAKE_SOURCE_DIR}/misc/CMake/test_srcs/sys_wait_test.c SYS_WAIT_TEST_RUNS)

如果您不想尝试运行代码,也可以使用CHECK_C_SOURCE_COMPILES(我们通常会这样做,但这种情况依赖于情境。)请参阅http://www.cmake.org/cmake/help/v3.0 /module/CheckCSourceRuns.htmlhttp://www.cmake.org/cmake/help/v3.0/module/CheckCSourceCompiles.html ,以获取有关使用变量控制编译方式的更多信息。 一般来说,如果您需要设置这些变量,您需要在指定测试值之前缓存其当前值,然后在测试后恢复原始值,即

set(CMAKE_REQUIRED_FLAGS_CACHE ${CMAKE_REQUIRED_FLAGS})
set(CMAKE_REQUIRED_FLAGS "-foo_flag")
CHECK_C_SOURCE_RUNS(${CMAKE_SOURCE_DIR}/CMake/time_test.c TIME_TEST_RUNS)
set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_CACHE})

多年来我在测试中遇到了一些令人费解的行为,这些行为是由于一次测试中的剩余物干扰了另一次。

您可以将try_compile()与样本源一起使用,其中#include两个文件并检查结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM