ubuntu CMake错误:尝试构建时出现未知语言

vjhs03f7  于 2023-10-17  发布在  其他
关注(0)|答案(1)|浏览(206)

我正在尝试编译一段非常旧的代码- wireshark版本1.9.2,在Ubuntu上。当我运行命令cmake..出现以下错误。

  1. CMake Error at /usr/share/cmake-3.16/Modules/CheckIncludeFiles.cmake:76 (message):
  2. Unknown language:
  3. C
  4. Supported languages: C, CXX.
  5. Call Stack (most recent call first):
  6. cmake/modules/FindGLIB2.cmake:241 (CHECK_INCLUDE_FILES)
  7. CMakeLists.txt:385 (find_package)
  8. -- Configuring incomplete, errors occurred!
  9. See also "/home/tusharsing/wireshark-1.9.2/build/CMakeFiles/CMakeOutput.log".

这一警告也在它之前。

  1. CMake Warning (dev) at /usr/share/cmake-3.16/Modules/CheckIncludeFiles.cmake:71 (if):
  2. Policy CMP0054 is not set: Only interpret if() arguments as variables or
  3. keywords when unquoted. Run "cmake --help-policy CMP0054" for policy
  4. details. Use the cmake_policy command to set the policy and suppress this
  5. warning.
  6. Quoted variables like "C" will no longer be dereferenced when the policy is
  7. set to NEW. Since the policy is not set the OLD behavior will be used.
  8. Call Stack (most recent call first):
  9. cmake/modules/FindGLIB2.cmake:241 (CHECK_INCLUDE_FILES)
  10. CMakeLists.txt:385 (find_package)
  11. This warning is for project developers. Use -Wno-dev to suppress it.

我该怎么办?

lsmd5eda

lsmd5eda1#

我试着用cmake 3.23构建this_commit。你失败的地方会通过这个cmake版本。因此,作为一种选择,如果可能的话,我建议您使用稍后的cmake。
进一步的分析
问题发生在这里cmake/modules/FindGLIB2.cmake:241

  1. IF ( GLIB2_FOUND )
  2. # Check if system has a newer version of glib
  3. # which supports g_regex_match_simple
  4. INCLUDE( CheckIncludeFiles )
  5. SET( CMAKE_REQUIRED_INCLUDES ${GLIB2_INCLUDE_DIRS} )
  6. >>> CHECK_INCLUDE_FILES ( glib/gregex.h HAVE_GLIB_GREGEX_H )
  7. CHECK_INCLUDE_FILES ( glib/gchecksum.h HAVE_GLIB_GCHECKSUM_H )
  8. # Reset CMAKE_REQUIRED_INCLUDES
  9. SET( CMAKE_REQUIRED_INCLUDES "" )
  10. ENDIF( GLIB2_FOUND )

可以像这样将语言传递给CHECK_INCLUDE_FILES

  1. CHECK_INCLUDE_FILES(glib/gregex.h HAVE_GLIB_GREGEX_H LANGUAGE "C")

或使用未加引号的C
作为第二种方法,可以使用它提供的另一个模块CheckIncludeFile和宏。潜在的好处是,它不会比较变量和字符串文字来验证正确的语言,并且默认使用C

展开查看全部

相关问题