Cmake 'check_include_files' функция не удалась, когда файлы существуют - PullRequest
0 голосов
/ 06 ноября 2018

Предположим, у нас есть файл CMakeLists.txt, который имеет такой код (ниже - небольшая часть всего файла):

cmake_minimum_required(VERSION 2.6.3)
#...
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/include/mit-krb5/")
message("CMAKE_REQUIRED_INCLUDES=${CMAKE_REQUIRED_INCLUDES};CMAKE_REQUIRED_DEFINITIONS=${CMAKE_REQUIRED_DEFINITIONS};CMAKE_REQUIRED_FLAGS=${CMAKE_REQUIRED_FLAGS}")
message("before find path, fuckGssApiIncludes=${fuckGssApiIncludes}")
find_path(fuckGssApiIncludes "gssapi.h" "/usr/include")
if(NOT fuckGssApiIncludes)
   message(FATAL_ERROR "Can't find folder containing gssapi.h")
endif()
message("after, fuckGssApiIncludes=${fuckGssApiIncludes}")
include_directories(${fuckGssApiIncludes})
check_include_files("gssapi.h" HAVE_GSSAPI_H)
#....
if (NOT HAVE_GSSAPI_H)
  message(FATAL_ERROR "Cannot find GSS libraries")

И у нас есть несколько файлов:

# ls /usr/include/gssapi.h
/usr/include/gssapi.h

Но когда я запускаю эту команду с cmake version 3.12.1 , я получаю ошибку, подобную этой:

CMAKE_REQUIRED_INCLUDES=/usr/include/;/usr/include/x86_64-linux-gnu/;CMAKE_REQUIRED_DEFINITIONS=;CMAKE_REQUIRED_FLAGS=
before find path, fuckGssApiIncludes=
after, fuckGssApiIncludes=/usr/include
CMake Error at CMakeLists.txt:548 (message):
  Cannot find GSS libraries

Я подумал, что Cmake.check_include_files не работает как определение Cmake.

Итак, Q1: Правильна ли моя мысль и почему? Q2: Как обойти эту проблему и заставить этот cmakelists.txt работать хорошо?

1 Ответ

0 голосов
/ 06 ноября 2018

Ответ найти, просто удалите все временные файлы cmake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...