我目前正在将一个autotools项目移植到CMake,该项目使用AC_HEADER_TIME autotools宏来检查是否可以同时包含time.h和sys/time.h。
如何使用CMake来完成这一任务?
发布于 2015-04-04 02:53:22
具体而言,这并不是时间测试,但对于如何完成这类工作的示例,您可以查看BRL中的示例:
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.html和http://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})这些年来,我在测试中出现了一些令人困惑的行为,这些行为是由一次测试中遗留下来的干扰另一次测试造成的。
发布于 2015-04-02 17:02:02
您可以将编译()与样例源一起使用,该示例源同时使用#include文件并检查结果。
https://stackoverflow.com/questions/29402452
复制相似问题