c++ - 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# - 是否可以将 LINQ“Take”扩展方法的结果转换为原始类型?
- ios - 无法从 Firebase MLkit 在 iPhone X 下方扫描 PDF417 类型的条码
- python - Pysqlcipher3 找不到 sqllite3 共享库
- mysql - 如何在一个查询中使用 sql 条件进行过滤?
- swift - 如果我快速移动身体,didEnd(_ contact: SKPhysicsContact) 不起作用
- pagination - 偏移分页与光标分页
- node.js - 错误:以高速率触发事务时无法在截止日期前连接
- vim - Vim:一个窗口中有多个选项卡?
- java - 如何添加第二个资源适配器以同时使用 ibm mq (WebSphere) 和 ActiveMQ (Artemis)?
- vba - exportxml 方法在导出 30% 的表、3GB 内存、3TB 磁盘后停止,没有运行时错误代码。在其他机器上运行完美