【问题标题】:Issue using CMake : gtk module使用 CMake 的问题:gtk 模块
【发布时间】:2011-04-18 14:06:10
【问题描述】:

我正在尝试使用 CMake 编译 zzogl,但一直遇到问题。我的第一个问题说我需要 pkgconfig,所以我安装了它,为此我还必须安装 MacPorts。然后它说我需要 gtk+-2.0 模块,所以我也得到了。之后花了很长时间安装,我仍然收到此错误:

checking for module 'gtk+-2.0'
package 'gtk+-2.0' not found
CMake Error at /Applications/CMake 2.8-2.app/Contents/share/cmake-2.8/Modules/FindPkgConfig.cmake:266 (message):
A required package was not found
Call Stack (most recent call first):
/Applications/CMake 2.8-2.app/Contents/share/cmake-2.8/Modules/FindPkgConfig.cmake:320 (_pkg_check_modules_internal)
CMakeLists.txt:106 (pkg_check_modules)


CMake Error at cmake/funcs.cmake:32 (message):
gtk not found, aborting...
Call Stack (most recent call first):
cmake/funcs.cmake:23 (reportFound)
CMakeLists.txt:107 (checkFor)


Configuring incomplete, errors occurred!

我对自己在做什么并不是很熟悉,而且我完全有可能做错了。有人对我的问题有任何煽动吗?顺便说一句,我正在使用带有雪豹的 Mac。

【问题讨论】:

    标签: gtk cmake compilation


    【解决方案1】:

    您是否使用类似于sudo port install gtk2 的命令安装gtk?如果是,那么通常 gtk 应该由 cmake 找到。您可以像这样手动测试 pkg-config 是否正确找到了 gtk:

    pkg-config --cflags gtk+-2.0
    

    应该打印类似的东西

    -pthread -D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12
    

    但路径不同,以上是在Linux系统上。

    如果 pkg-config 调用确实成功,则说明您的 CMake 配置有问题。然后,您可以尝试像这样安装 MacPorts 版本的 cmake:sudo port install cmake 并使用这个。

    【讨论】:

    • 感谢您的回复,但是在运行 pkg-config --cflags gtk+-2.0 之后,我基本上得到了您所拥有的,但是将 -I/usr/lib/gtk 替换为: -I/opt/local/include /gtk-2.0 等。然后我尝试使用命令行再次安装 cmake,然后再次尝试编译。我最终得到了与我之前的尝试相同的错误,逐字逐句。
    • 您是否从 pkg-config 工作的同一终端启动 CMake?那我真的没主意了……
    • 最初我使用 gui 运行 Cmake 应用程序。然而这一次我在命令行中使用:cmake zzogl 运行它。我认为这是正确的?
    • 是的。使用 cmake,您通常可以在源代码之外工作。这意味着您转到源目录,例如~/src/zzogl.然后你说 mkdir build;光盘构建; cmake ..
    • 我遇到了同样的问题。 pkg-config 发现一切都很好,但我收到以下 cmake 错误: -- 未找到部分或全部 gtk 库。 (缺少:GTK2_GLIBCONFIG_INCLUDE_DIR GTK2_GDKCONFIG_INCLUDE_DIR)
    【解决方案2】:

    好的,我查看了FindGTK2.cmake 模块,我想我明白了问题所在:它不使用pkg-config,而是使用自己的方式查找头文件和库。 _GTK2_FIND_INCLUDE_DIR 函数的目录列表中没有 /opt/local/include/,MacPorts 可能会在其中安装头文件。同样,_GTK2_FIND_LIBRARY 不会列出 /opt/local/lib

    这是一个known bug,显然已在CMake 2.8.3-rc1 中修复。不过,我有疑问,因为他们没有更新库路径。我们拭目以待。

    我查看了find_pathfind_library 的文档。看来用户可以通过将-D 选项指定为cmake 来提供有关搜索路径的提示。尝试类似:

    cmake ../zzogl -DCMAKE_INCLUDE_PATH=/opt/local/include -DCMAKE_LIBRARY_PATH=/opt/local/lib
    

    【讨论】:

    • 太棒了! -DCMAKE_*_PATH 对我不起作用,但给定链接上的补丁可以。我刚刚将 FindGTK2.cmake 复制到我的源目录中的 CMakeModules 目录中,从补丁中进行了更改,并将 set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules/") 添加到我的主 CMakeLists.txt。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多