当文件存在时,Cmake 'check_include_files' 函数失败

标签 c cmake

假设我们有一个 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 版本 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 运行良好?

最佳答案

答案找到,只需删除所有cmake临时文件即可。

关于当文件存在时,Cmake 'check_include_files' 函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53172536/

相关文章:

regex - CMake 字符串正则表达式替换

cmake - 如何使用 CMake 启用链接时间优化 (LTO)?

计算二维数组中的值 - C

c - 守护进程/后台通过脚本从另一个程序启动的进程

c - 在 C 中实现 KeyPress 事件

c++ - CMake 和非标准扩展

cmake - 如何在重新安装期间使用 CPack NSIS 显示卸载程序窗口?

c - 在后台 C linux 中运行一个新的子进程

c - 在文本框和程序源代码之间传递信息

regex - cmake查找隐藏文件