首页 > 解决方案 > GTKMM 不适用于我的 CLion 安装 (Windows 10)。CMakeLists.txt - 找不到 PkgConfig

问题描述

我有一个可能是初学者的问题:我试图让 Gtk 在 Windows 环境中与 CLion 一起运行。

我已经通过这个:https ://wiki.gnome.org/Projects/gtkmm/MSWindows几次(以确认我做对了),在我的系统 PATH 设置中添加了一些东西,以及尝试操作CLion 中的 CMakeLists.txt 文件,它似乎无法找到该库。我一直在stackoverflow上以不同的方式提出我的问题并尝试了一些解决方案,但到目前为止还没有运气。

可以在 CLion 中使用 gtk 标头吗?

尝试运行带有 gtkmm 标头的程序时出现以下错误:致命错误:gtkmm/application.h:没有这样的文件或目录

我的 CMakeLists.txt 如下所示:

cmake_minimum_required(VERSION 3.14)
project(Kmeans)

set(CMAKE_CXX_STANDARD 14)
set(PKG_CONFIG_EXECUTABLE "/usr/bin/pkg-config")
add_executable(Kmeans main.cpp)

find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0)

include_directories(${GTKMM_INCLUDE_DIRS})
link_directories(${GTKMM_LIBRARY_DIRS})

set(SOURCE_FILES main.cpp)
target_link_libraries(${CMAKE_PROJECT_NAME} ${GTKMM_LIBRARIES})

通常发生的情况是我收到如下错误读数:

CMake 错误:/Program Files/JetBrains/CLion 2018.3.4/bin/cmake/win/share/cmake-3.14/Modules/FindPkgConfig.cmake:510(消息):

-- 找不到 PkgConfig(缺少:PKG_CONFIG_EXECUTABLE)找不到 pkg-config 工具

编辑以反映评论和持续努力:

我已经按照 wiki 页面的建议运行了 pacman -S pkg-config,我可以在我的 C:\msys64\var\lib\pacman\local 文件夹中看到一个 pkg-config。在 CLion 的工具链中,环境为 MinGW,CMake 被指定为自动检测编译器,位于 MINGW\mingw32\bin\g++.exe 中。

我还使用 Cygwin 终端确认我的可执行文件位于 usr/bin/pkg-config 中,并在查看@Isuru Walpola 提供的答案后将 set(PKG_CONFIG_EXECUTABLE "/usr/bin/pkg-config") 添加到我的 cmake 文件中在这里:https ://askubuntu.com/questions/717302/cmake-could-not-find-pkgconfig-missing-pkg-config-executable

不幸的是,我仍然收到相同的错误消息。

此外,我尝试完全重新安装 CLion,并将我的环境切换到 Cygwin,使用它的安装文件安装任何我能找到的引用 gtk3(及以下)的库/文档/开发工具。当我开始输入 #include <> 语句时,CLion 还会为此预填充名称,但是一旦写入完整的包含语句,就找不到它们。

我不再收到 pkg-config not found 错误,而是 CLion 无法找到这些特定的 GTK 库和头文件。

我的 CMakeLists.txt 现在如下所示。由于我并不真正理解某些命令,因此我在测试中包含了一些重复和不可用的行。

cmake_minimum_required(VERSION 3.14)
project(ProjectKMeans)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(CMAKE_CXX_STANDARD 14)
set(PKG_CONFIG_PATH /usr/lib/pkgconfig)
set(PKG_CONFIG_EXECUTABLE /usr/bin/pkg-config.exe)
add_executable(ProjectKMeans main.cpp)

find_package(PkgConfig)

pkg_check_modules(GTKMM gtkmm-3.0)
pkg_check_modules(gtk gtkmm-3.0)
PKG_CHECK_MODULES(GTK GTK)
ADD_DEFINITIONS(${GTKMM_CFLAGS_OTHER})
include_directories(${GTKMM_INCLUDE_DIRS})
link_directories(${GTKMM_LIBRARY_DIRS})

set(SOURCE_FILES main.cpp)
target_link_libraries(${CMAKE_PROJECT_NAME} ${GTKMM_LIBRARIES})

我认为问题在于 GTKMM 未被识别。我不明白这个命名约定。我所知道的图书馆都没有这个名字。我错过了什么?

标签: c++windowscmakeclion

解决方案


推荐阅读