如何在 Windows 中使用 cmake 更轻松地链接 gtk 库?

2024-05-04

我现在通过手动包含所有必需的路径(gtk包位于D:/Tools/gtk+-bundle_2.20.0-20100406_win32):

include_directories(D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/gtk-2.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/glib-2.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib/glib-2.0/include D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/cairo D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/pango-1.0 D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib/gtk-2.0/include D:/Tools/gtk+-bundle_2.20.0-20100406_win32/include/atk-1.0)
link_directories(D:/Tools/gtk+-bundle_2.20.0-20100406_win32/lib)

target_link_libraries(MyProgram gtk-win32-2.0.lib)

2019-10-29 编辑:虽然这个答案仍然有效,但请注意,自 2011 年我最初的答案以来,CMake 已经发展了很多。对“现代 CMake”进行一些搜索,因为有许多语法和最佳实践更改。

原答案:

只需将包含 pkg-config 的目录(位于 gtk-bundle/bin 目录中)添加到您的 PATH 中即可。这样,CMake 就会找到它。

以下是用 GTK2 编写的示例应用程序的 CMakeLists.txt:

cmake_minimum_required (VERSION 2.4)
project (gtk-test)

find_package (PkgConfig REQUIRED)
pkg_check_modules (GTK2 REQUIRED gtk+-2.0)

include_directories (${GTK2_INCLUDE_DIRS})
link_directories (${GTK2_LIBRARY_DIRS})
add_executable (gtk-test main.c)
add_definitions (${GTK2_CFLAGS_OTHER})
target_link_libraries (gtk-test ${GTK2_LIBRARIES})

以及我的测试应用程序的 main.c 文件:

#include <gtk/gtk.h>

int main (int argc, char **argv)
{
    GtkWidget *window;

    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title (GTK_WINDOW (window), "Hello world !");
    g_signal_connect (G_OBJECT (window), "destroy", gtk_main_quit, NULL);

    gtk_widget_show_all (window);
    gtk_main ();

    return 0;
}

我在 Win XP 上使用 CMake 2.4、CMake 2.8 和 MinGW 对其进行了测试,它可以工作。它也应该在 MinGW 之外工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 中使用 cmake 更轻松地链接 gtk 库? 的相关文章

  • 64 位大型 malloc

    malloc 失败的原因是什么 尤其是在 64 位中 我的具体问题是尝试在 64 位系统上分配一大块 10GB RAM 该机器有 12GB RAM 和 32GB 交换空间 是的 malloc 是极端的 但是为什么它会成为一个问题呢 这是在带
  • Node.js + Socket.io + Windows 7 / 8?

    我一直在到处寻找 但似乎找不到解决方案 是否可以在 Windows 7 上的 Node js 上安装 Socket io 如果没有 是否有某种替代方案 或者您知道未来有任何 Windows 支持吗 通常使用 Node js 包管理器 但是我
  • 在 C# 中使用反射列出枚举中的值

    我正在尝试使用反射来列出一个 Visual Studio 解决方案内的各个项目中的一些类的公共成员和方法 我尝试访问的所有类都是 C 的 并且它们都是从 C 类访问的 我用来进行这些调用的代码如下 public void PopulateE
  • 使用 mingw32 在 Windows 上构建 glew 时“DllMainCRTStartup@12”的多个定义

    我关注了这个主题 使用 mingw 使建筑物在 Windows 上闪闪发光 https stackoverflow com questions 6005076 building glew on windows with mingw 6005
  • 使用 cmake add_definitions 的文件路径

    我正在尝试替换硬编码预处理器 define MY FILE PATH usr local myfile 在 cmake 中使用 add definitions add definitions DMY FILE PATH MY FILE PA
  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start
  • 有关 CMake 错误的问题:没有为目标提供源

    我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中 但出现错误 我运行的是 debian 10 我的 cmake 版本是 3 13 4 cmake 的文件可以在以下位置找到这个 git 仓库 https
  • 如何获取Windows批处理的父文件夹

    我正在编写一个批处理文件 我需要获取该bat文件的父文件夹 有可能吗 注意 我的意思是批处理文件的父文件夹 而不是调用该批处理的提示的当前目录 Thanks 批处理的父文件夹位于变量中 dp0位于 例子 echo off setlocal
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • Windows 睡眠功能极慢

    我正在通过 Windows h 使用 Sleep 命令制作一个程序 并且在 Windows 10 而不是 Windows 7 上运行我的程序时遇到了令人沮丧的差异 我将我的程序简化为下面的程序 它与我的更复杂的程序表现出相同的行为 在 Wi
  • 哪个版本的 Miniconda 具有适用于 Windows 64 位的 Python 3.6?

    我正在开发一个需要这些深度学习库的项目 keras 和 tensorflow 不幸的是 这些不适用于 Python 3 7 有人可以告诉我一个带有 Python 3 6 的 Miniconda 版本 适用于 Windows 64 位 吗 我
  • 有没有办法在 CMake 配置中禁止“实验性”C++17?

    我在 CMakeLists txt 中设置了以下内容 set CMAKE CXX STANDARD 17 set CMAKE CXX STANDARD REQUIRED ON set CMAKE CXX EXTENSIONS OFF 然而
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • Jenkins 可以检测到任何 svn 用户每次提交代码吗?

    Jenkins 可以检测到任何 svn 用户每次提交代码吗 我想知道每次 Jenkins 提交 svn user 时 有什么方法或 jenkins 插件吗 现在我用svn updateJenkins 中的 cmd 来更新 svn 您可以按照
  • 在Windows 7上安装curl后缺少libcurl-4.dll

    按照这个人的安装curl后指示 https stackoverflow com a 28757477 1186038 除了第 2 步 已安装Win64 OpenSSL v1 0 1u 轻型相反 因为下载页面中缺少版本 k http slpr
  • VB - 以隐式方式链接 DLL

    我正在开发 VB6 图形界面 并且需要隐式链接到 DLL 这样做的动机来自于我上一个问题 https stackoverflow com questions 5194573 有问题的 DLL 使用静态 TLS declspec thread
  • 为什么 fopen 无法打开已存在的文件?

    我在 Windows XP 上使用 Visual Studio 6 是的 我知道它很旧 构建 维护 C DLL 我遇到了 fopen 无法打开现有文件的问题 它总是返回 NULL 我试过了 通过将 errno 和 doserrno 设置为零
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • 在高 dpi Windows 平台上自动重新缩放应用程序?

    我正在编写一个需要在高 dpi Windows 192dpi 而不是 96dpi 上运行的 Qt 应用程序 不幸的是 Qt 框架尚不支持高 dpi 至少在 Windows 上 因此我的应用程序及其所有元素看起来只有应有尺寸的一半 有没有办法
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo

随机推荐

  • 如何制作 U 矩阵?

    为了可视化一个 U 矩阵到底是如何构建的自组织映射 http en wikipedia org wiki Self organizing map 更具体地说 假设我有一个 3x3 节点的输出网格 已经经过训练 我如何从中构造一个 U 矩阵
  • 使用 Spring mvc 和 MockMVC 上传文件

    我已成功将图像文件上传到WebContent resources uploads image jsp 但我在使用 MockMvc 进行测试时遇到了问题 当我运行测试用例时 我遇到了异常文件未找到 and 拒绝访问 控制器看起来像这样 Req
  • Flurry 与 Android 应用程序集成出现错误“无法找到类 'com.flurry.sdk.i',从方法 com.flurry.sdk.hu.a 引用”

    这是我到目前为止所尝试过的 public class ScoreUpApp extends Application private static ScoreUpApp scoreUpDataCache public static final
  • 局部敏感哈希 - Elasticsearch

    有没有允许在 Elasticsearch 上使用 LSH 的插件 如果是的话 您能否指出该位置并告诉我如何使用它 谢谢 编辑 我发现ES使用了MinHash插件 我怎样才能用这个来比较文件呢 查找重复项的最佳设置是什么 有一个Elastic
  • 检测矩形经过黄色像素

    我有一个关于检测移动和可能旋转的矩形何时经过面板背景图像的黄色像素的最佳方法的疑问 我有一个方法 它接受一个图像和一个点 如果该点是黄色像素的点 则返回 true 我需要这种颜色检测来实现我的游戏功能 如果汽车 玩家 驶过赛道的黄色边界 它
  • geom_line:如何仅连接几个点

    我有这个数据框和这个图 df lt data frame Groupe rep c A B 4 Period gl 4 2 8 c t0 t1 t2 t3 t4 rate c 0 83 0 96 0 75 0 93 0 67 0 82 0
  • Spark 数据框添加带有随机数据的新列

    我想向数据框中添加一个新列 其值由 0 或 1 组成 我使用了 randint 函数 from random import randint df1 df withColumn isVal randint 0 1 但我收到以下错误 spark
  • 将输入字段限制为两位小数 - Angular 5

    代码如下
  • `gcloud run deploy` 引发“修订版 尚未准备好,无法提供流量。”

    Command gcloud run deploy api region REGION image IMAGE Logs Deploying container to Cloud Run service api in project MAS
  • 函数声明内使用冒号

    我看到一段代码 其中在函数声明中使用了冒号 DoWork 参数1 参数2 我知道冒号用于继承 class Child Parent但是 在变量之前使用冒号的目的是什么 编辑我已经更正了问题 命名可选参数 http msdn microsof
  • 如何全局公开 es6 模块

    我需要编写一个可在全局窗口上使用的模块 我使用 es6 创建模块 我定义的每个类都有它自己的文件 我正在使用 webpack 来 babelify 并捆绑这些类 我的模块的入口点也是包含要公开的全局的文件 我尝试了各种方法来实现这一点 包括
  • Google App Engine 密钥中允许使用哪些字符?

    在测试我的 Google App Engine 应用程序时 我搜索包含应用程序引擎密钥的链接 例如 story ag5yZXBsaWUtdGVzdGluZ3IMCxIFU3RvcnkY w0M 这些键中允许使用哪些字符 我一直在使用正则表达
  • C#5 AsyncCtp BadImageFormatException

    请帮助我解决这个问题 我一直在使用异步库和 C 5 ctp 编译器编写控制台应用程序 当我第一次实际运行等待的代码时 我得到了这个 System BadImageFormatException was unhandled Message A
  • 了解 C# 和 Java 中的 IEEE-754 64 位定点表示

    考虑以下 Java 代码 public class Program public static void main String args double number Double MAX VALUE String formattedNum
  • 将新文件添加到 Cloud Storage 时触发 Dataflow 作业

    我想在将新文件添加到存储桶时触发数据流作业 以便处理新数据并将其添加到 BigQuery 表中 我看到云函数可以被触发 https cloud google com functions calling google cloud storag
  • 变量的同步和本地副本

    我正在查看一些具有以下习惯用法的遗留代码 Map
  • 如何为Python程序创建自定义GUI?

    我想为具有自定义设计的 python 程序创建一个 GUI 我在 Photoshop 中有一个模型 我正在寻找一个支持主题的库或任何其他可以完成这项工作的库 我的 GUI 设计包含渐变 边框 边框半径和带有自定义最小化和关闭按钮的自定义标题
  • Java中的马尔可夫模型决策过程

    我正在用 Java 编写辅助学习算法 我遇到了一个我可能可以解决的数学问题 但由于处理量很大 我需要一个最佳解决方案 话虽这么说 如果有人知道一个优化的库 那就太棒了 但语言是 Java 所以需要考虑到这一点 这个想法相当简单 对象将存储变
  • 提取“|”之前的字符串[复制]

    这个问题在这里已经有答案了 我有一个数据集 其中一列如下所示 ABC DEF GHI ABCD EFG HIJK ABCDE FGHI JKL DEF GHIJ KLM GHI JKLM NO PQRS BCDE FGHI JKL 等等 我
  • 如何在 Windows 中使用 cmake 更轻松地链接 gtk 库?

    我现在通过手动包含所有必需的路径 gtk包位于D Tools gtk bundle 2 20 0 20100406 win32 include directories D Tools gtk bundle 2 20 0 20100406 w