jov
@jov

Странность с макросом CHECK_C_SOURCE_COMPILES из CMake

Перевожу проект, вернее его часть, на cmake. Для проверки наличия функции ранее использовалось
AC_MSG_CHECKING(for function clock_gettime in time.h)
AC_TRY_LINK([
#include <time.h>
],
[struct timespec tp;
clock_gettime(CLOCK_REALTIME, &tp);
],
AC_DEFINE(HAVE_TIME_CLOCK_GETTIME,1,[Define to 1 if function 'clock_gettime' exists.])
AC_MSG_RESULT(yes),
AC_MSG_RESULT(no))
На мойм хосте проверка показывает наличие этой функции.
Теперь пытаюсь проверить наличие данной функции следующими способами
INCLUDE (CheckFunctionExists)
CHECK_FUNCTION_EXISTS(clock_gettime HAVE_TIME_CLOCK_GETTIME)
и
INCLUDE (CheckCSourceCompiles)
CHECK_C_SOURCE_COMPILES("#include <time.h>
 int main(int argc, char * argv[]) {
  struct timespec tp;
  clock_gettime(CLOCK_REALTIME, &tp))
}" HAVE_TIME_CLOCK_GETTIME)
В обоих случаях неудача. Подскажите пожалуйста, что я делаю не так?
  • Вопрос задан
  • 2682 просмотра
Пригласить эксперта
Ответы на вопрос 1
Если верить документации, то функция clock_gettime требует линьковки с библиотекой rt (Link with -lrt), поэтому cmake не может слиньковать тестовый код.
Согласно документации на cmake можно воспользоваться переменной CMAKE_REQUIRED_LIBRARIES для того, чтобы вышеназванные функции при линьковке подключили нужную библиотеку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы