我无法使用 CMake 在 Mac 上编译 gtkmm

Posted

技术标签:

【中文标题】我无法使用 CMake 在 Mac 上编译 gtkmm【英文标题】:I can't get gtkmm to compile on Mac using CMake 【发布时间】:2020-03-31 01:53:34 【问题描述】:

我正在尝试建立一个可以使用 gtkmm 进行 C++ 开发的环境。我的 CMakeLists.txt 文件如下所示:

cmake_minimum_required(VERSION 3.0.2)
project(program)

find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0)

link_directories($GTKMM_LIBRARY_DIRS)
include_directories(include $GTKMM_INCLUDE_DIRS)

file(GLOB SOURCES "*.cpp")

add_executable(program $SOURCES)

target_link_libraries(program $GTKMM_LIBRARIES)

然而,当我尝试在 main 中包含 include <gtkmm.h> 行时,我遇到了来自 CMake 的此错误:

fatal error: 'gtkmm.h' file not found
#include <gtkmm.h>

我使用命令brew install gtkmmbrew install gtkmm3 安装了带有brew 的gtkmm,以确保版本不是问题。我该怎么做才能让它发挥作用?

【问题讨论】:

$GTKMM_INCLUDE_DIRS 的值是多少?你可以做message($GTKMM_INCLUDE_DIRS) @squareskittles 找不到 PkgConfig(缺少:PKG_CONFIG_EXECUTABLE) 您应该首先解决在尝试编译之前 运行CMake 时遇到的任何错误。 pkg-config 甚至安装在您的系统上吗?当你输入 which pkg-config 时会发生什么? @Laif:请在您的问题帖子中添加配置消息(如Could NOT find PkgConfig)。奇怪的是问题帖子不包含影响解决问题的关键信息。 【参考方案1】:

请务必安装 pkg-config(使用 brew)。

这是一个可以使用的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.16)

project(program LANGUAGES CXX)

find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0)

add_executable(program)

target_compile_features(program PRIVATE cxx_std_17)

target_sources(program PRIVATE main.cpp)

target_include_directories(program PRIVATE $GTKMM_INCLUDE_DIRS)

target_link_directories(program PRIVATE $GTKMM_LIBRARY_DIRS)

target_link_libraries(program PRIVATE $GTKMM_LIBRARIES)

【讨论】:

以上是关于我无法使用 CMake 在 Mac 上编译 gtkmm的主要内容,如果未能解决你的问题,请参考以下文章

Cmake 无法在 qt creator/collect2 上编译简单的测试程序:错误:ld

代码块无法在 mac OSX 上编译

使用 cmake 在 windows 上编译 c++ 数据库时出错

Elixir CRC 无法在 MAC 操作系统上编译

在 Windows 上编译时出现 Apache thrift 错误

为 Mac OS X 编译 libjingle/gtk+-2.0 的问题