CMake无法找到GLib2。

3
在OS X 10.8.2上,我安装了macports,并安装了以下内容:
glib2
pkg-config

除其他事项外,我运行的cmake尝试使用pkg-config查找glib2。 运行pkg-config --libs glib-2.0:

-L/opt/local/lib -lglib-2.0 -lintl

--cflags:

-I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include

然而,当我尝试输入它们(单独或使用;:全部),以及各种组合,或者当我尝试下载gtk并使用该glib2目录时:cmake抱怨找不到目录:

checking for module 'gstreamer-0.10'
  found gstreamer-0.10, version 0.10.36
checking for module 'glib-2.0'
  found glib-2.0, version 2.34.3
CMake Error at /Applications/CMake 2.8-10.app/Contents/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (message):
  Could NOT find GLib2 (missing: GLIB2_LIBDIR GLIB2_INCLUDE_DIRS)
Call Stack (most recent call first):
  /Applications/CMake 2.8-10.app/Contents/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:291 (_FPHSA_FAILURE_MESSAGE)
  cmake/Modules/FindGLib2.cmake:127 (find_package_handle_standard_args)
  cmake/Modules/FindGStreamer.cmake:12 (find_package)
  CMakeLists.txt:32 (find_package)

我看到这个页面关于MonoDevelop与pkg-config冲突的信息。我卸载了Mono,没有找到其他任何可用的pkg-config二进制文件,并清除了cmake缓存,但没有成功。我查看了cmake的具体细节,它正在寻找glib.h和glibconfig.h文件,而这些文件在那些目录中。为什么它不能正常工作呢?
2个回答

2

我在使用cmakeCentos8.2/RHEL8.2上从源代码构建wireshark-3.4.2时遇到了问题。错误信息如下:

  • Could NOT find GLIB2 (missing: GLIB2_LIBRARY GLIB2_MAIN_INCLUDE_DIR GLIB2_INTERNAL_INCLUDE_DIR) Required is at least version "2.32.0")

而我的系统已经预装了glib-2.56.4

解决方法:安装glib2-devel软件包。然后,cmake正常找到了glib-2.0。

cmake输出如下:

  • -- Checking for one of the modules 'glib-2.0'
  • -- Found GLIB2: /usr/lib64/libglib-2.0.so (found suitable version "2.56.4", minimum required is "2.32.0")

2
请尝试使用此文件:http://svn.opensync.org/branches/3rd-party-cmake-modules/modules/FindGLIB2.cmake 在您的主CMakeLists.txt文件中,输入以下行:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/helper/")

假设上面的FindGLIB2.cmake文件存储在src目录下的/helper文件夹中。
该文件的内容将帮助CMake更好地查找GLIB2。
此链接将帮助您了解这些文件的工作原理:http://www.cmake.org/Wiki/CMake:How_To_Find_Libraries#Writing_find_modules

看起来已经解决了,谢谢。在修复了一些其他问题后,我生成了makefiles。当然,我覆盖了之前的FindGlib2.cmake文件,所以无法对比它们并查看问题所在。哎,算了。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接