安装 GTK 以便在 Windows 10 上的 Code::Blocks 中使用
Installing GTK for use in Code::Blocks on Windows 10
原问题
我在安装 gtk 以开始在 Code::Blocks 上用 C++ 构建 GUI 时遇到问题。谁能把我推向正确的方向?我在 Lenovo 上 运行ning Windows 10(64 位)。
我尝试了安装指南 (https://www.youtube.com/watch?v=jvQXvTtSIQo), stack overflow (), the official GTK installation guide (https://www.gtk.org/download/windows.php), a written guide (http://www.tarnyko.net/repo/gtk3_build_system/tutorial/gtk3_tutorial.htm), and just noticed a very similar stack overflow ()
在此之前我的PATH环境变量只记录了C:\Users\Owner\AppData\Local\Microsoft\WindowsApps;C:\Users\Owner\AppData\Roaming\npm;C:\Users\Owner\AppData\Local\atom\bin;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
我从 mingw.org 下载了 MinGW。这是对youtubelink的评论说官方比Code::Blocks可以安装的稳定。我将 C:\MinGW\bin 添加到 PATH。
尝试官方 GTK 安装站点,我下载了 MSYS2 并使用 pacman -Syu 安装核心系统包,然后使用 pacman -Su 进行更新。到此为止,所以我认为 gtk 已正式安装,我只需要让它与 Code::Blocks 通话即可。我将 C:\msys64\mingw64\bin 添加到 PATH 但这似乎不起作用。
我尝试在 http://www.tarnyko.net/dl/gtk.htm 安装 GTK 3.6.4 的一体式包,并将其解压缩到 C:\gtk。我现在在 PATH 中有 C:\gtk\bin。 GTK 应该以一种或另一种形式出现在我的道路上。我可以 运行 gtk3-demo 和 gtk-demo-application 从 CMD 但不是 MSYS2。我对此有点困惑。我想这可能与 MSYS2 的特定路径变量有关?但是它应该在之后搜索系统的 PATH 吗?而且我不知道如何更改该特定路径?可能改天再问。
所以类似的stack overflow,youtube,写的教程都说用pkg-config --cflags --libs gtk+-3.0
来检查合理的输出,看看我是否正确安装了gtk。我安装了
pkg-config-lite 以避免 How to install pkg config in windows? 描述的 glib 循环依赖问题和 f运行kly 我不明白。我将它添加到 C:\MinGW\bin 到我的路径中。现在我可以 运行 它了,但是得到:
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
我试过 3.6.4 而不是 3.0。没有骰子。我只试了 3 个。不。我只能找到 gtk3 文件,而不是我在任何地方安装的实际版本。 pkg-config --cflags --libs 说我需要命名一个库,所以我只尝试 gtk hopiing 来获取包含它的库。没有。其余教程旨在让 Code::Blocks 编译器(我认为)包含 gtk。我希望这是唯一的障碍,我将能够得到休息。但是,如果有人可以帮助我完成其余的工作,我将不胜感激。
在这一点上我没有想法。有人可以帮助我吗?
感激不尽,
约翰
Liberforce 回答后的更多问题
感谢您写下https://www.gtk.org/download/windows.php!!我敢打赌它能帮助很多像我一样沮丧的新手。一切正常后,我会提供更适当的反馈。如果您能提供更多帮助,我一直在编译 C/C++ 程序。在开始之前,我想非常清楚我采取的具体步骤。步骤名称与您的书面说明相对应。
第 1 步:安装 MSYS2
好的,正在重置所有内容...
从 PATH 和计算机中删除了 C:/gtk 目录,也就是所有的 tarnyko 文件。
从 PATH 和计算机中删除了 C:/MinGW 目录,有效卸载。我读了你与 Simon ( and https://chat.whosebug.com/rooms/156828/discussion-between-liberforce-and-simon) 的谈话,内容是关于包含 msys1.0 的 MinGW 终端和包含 MinGW 的 MSYS2 终端之间的混淆。我认为这样会更安全。
因此,我在 PATH 中只有 C:\msys64(以及我之前拥有的,与 GTK 无关)。
已卸载 MSYS2(通过 Add/Remove 程序)并使用来自 www.msys2.org 的 x86_64 重新安装。在 pacman -Syu 上,我收到错误消息,"msys2-runtime and catgets are in conflict" 和 "msys2-runtime and libcatgets are in conflict." 输入 y 以删除两者。
我一直在卸载和重新安装,但我遇到了以下问题...(5/5) 升级 pacman 是在 100% 并弹出警告:
警告:终止 MSYS2 而不返回 shell 并再次检查更新
警告:例如关闭终端 window 而不是调用 exit
程序到此停止。我假设这意味着关闭 window。我这样做了,然后单击确定对话框 "Processes are running in session: Close anyway?." Window 现在打印 "Hangup signal received" 并且它不再响应。我使用任务管理器来杀死它。
在第一个 pacman -Syu 给了我选择 shell 的对话框后,通过桌面应用程序打开 MSYS2:MSYS2,Mingw-w64 32 位,Mingw-w64 64 位。我改为进入文件系统并为所有未来实例打开 C:\msys64\msys2_shell.cmd。
运行 pacman -Syu 完成安装包。我再次重启 MSYS2,然后 运行 pacman -Su 显示
:: Starting core system upgrade...
there is nothing to do
:: Starting full system upgrade...
there is nothing to do
pacman -Syuu 显示:
:: Synchronizing package databases...
mingw32 is up to date
mingw64 is up to date
msys is up to date
pacman -Su、pacman -Sy 和 pacman -Suu 同样显示一切正常。关闭并重新打开 C:\msys64\msys2_shell.cmd
pkg-cofig 只给出 "bash: pkg-config: command not found." 所以我 运行 pacman -S pkg-config 让它工作了。但是,https://github.com/msys2/msys2/wiki/MSYS2-installation 中提到的 update-core 找不到,pacman -S update-core 将不起作用。 pacman -Ss 核心出现:
msys/coreutils 8.26-2 (base) [installed]
The basic file, shell and text manipulation utilities of the GNU operating
system
和其他看似无关的文件。 pacman -Ss core 的结果同样似乎无关紧要。
pacman --version 显示:
.--. Pacman v5.0.1 - libalpm v10.0.1
/ _.-' .-. .-. .-. Copyright (C) 2006-2016 Pacman Development Team
\ '-. '-' '-' '-' Copyright (C) 2002-2006 Judd Vinet
'--'
This program may be freely redistributed under
the terms of the GNU General Public License.
运行 "pacman --needed -S bash pacman pacman-mirrors msys2-runtime" 揭示:
warning: bash-4.4.019-2 is up to date -- skipping
warning: pacman-5.0.1-5 is up to date -- skipping
warning: pacman-mirrors-20160112-1 is up to date -- skipping
warning: msys2-runtime-2.10.0-2 is up to date -- skipping
there is nothing to do
我退出了所有 msys shells,和 运行 C:\msys64\autorebase.bat,尽管不是在 32 位系统上。我相信当它说重新打开 msys2_shell.bat 时有错字,我没有。我打开了 msys2_shell.cmd。我再次使用 pacman -Suu 来显示一切正常。
第 2 步 -> 第 5 步(可选):安装构建工具
Openned C:\msys64\msys2_shell.cmd and 运行 "pacman -S mingw-w64-x86_64-gtk3" (GTK+3 package) and "pacman -S mingw-w64-x86_64-toolchain base-devel" (package to develop GTK+3 applications in other languages) (出现提示时默认为所有安装)。
未能编译 GTK+3 应用程序
重新启动计算机。打开 C:\msys64\msys2_shell.cmd。关注 https://developer.gnome.org/gtk3/stable/gtk-getting-started.html.
将简单的 window 教程文件放在 C:\Users\Owner\Desktop\test_code\example-0.c 中。当 运行ning gcc pkg-config --cflags gtk+-3.0 -o example-0 example-0.c pkg-config --libs gtk+-3.0 时,出现了我原来问题中的错误。使用 "pacman -Ss gtk3" 看到我认为我需要的两个包。 运行 "pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-gtkmm3" .
为了在 向 Simon 回答关于同一错误的问题,pkg-config --list-all | grep gtk
returns 什么也没有,即使在关闭并重新打开 C:\msys64\msys2_shell.cmd 之后也是如此。 "which gcc" returns:
其中:没有 gcc
在(/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:
/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:
/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
我在 C:\msys64\mingw64\include 下看到了 gtk-3.0。我不知道如何将其添加到路径中。 "echo $PKG_CONFIG_PATH" returns:
/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig
使用 GTK+3 在控制台中正确编译了一个文件
检查 GTK 是否在控制台中
我需要在 Mingw-w64 64 位 shell 中打开 MSYS2。这可以通过 MSYS2 的桌面应用程序执行,它会提示您要打开三个 shell 中的哪一个:MSYS2、Mingw32 和 Mingw64。具体来说,我用命令 mingw-w64-x86_64-toolchain
安装 gtk 意味着它只能通过这种方式访问。
这个 shell 中的命令表明我确实有 gtk:
$ pkg-config --modversion gtk+-3.0
--> 3.22.29
$ which gcc
--> /mingw64/bin/gcc
从 Mingw64 控制台编译示例代码
我参考了https://github.com/msys2/msys2/wiki/MSYS2-introduction来学习文件系统/驱动器挂载语法。我将从 https://developer.gnome.org/gtk3/stable/gtk-getting-started.html 中获取的示例代码放在 `/c/Users/Owner/Desktop/test_code/example-0.c' 中。我只是使用了我最喜欢的 IDE、Atom,但任何文本编辑器都可以。
打开 MSYS2 的 Mingw64 shell, cd /c/Users/Owner/Desktop/test_code/
, 用 gcc \
pkg-config --cflags gtk+-3.0` -o example-0 example-0.c 编译`pkg-config --libs gtk+-3.0`` ,然后用 ./example-0
执行
不成功 Link GTK+3 和 Code::Blocks 编译器
我了解一些 Linker 设置
我进入了Code::Blocks。转到设置 > 编译器...确保使用选定编译器下的下拉框 select GNU GCC 编译器,并单击重置默认值,因为当我第一次安装 Code::Blocks 时很复杂。 Compiler Flags 下的复选框在重置后应该全部空白,因此我在 General 下选中了 "Have g++ follow the C++14 ISO C++ language standard [-std=c++14]",在 Warnings 下选中了 "Enable all common compiler warnings (overrides many other settings) [-Wall]"。
在显示编译器标志的位置旁边,我转到 Linker 设置并将文本添加到其他 linker 选项。我通过 运行ning pkg-config --cflags gtk+-3.0
:
得到了这篇文章
-mms-bitfields -pthread -mms-bitfields -IC:/msys64/mingw64/include/gtk-3.0 -IC:/msys64/mingw64/include/cairo -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/pango-1.0 -IC:/msys64/mingw64/include/fribidi -IC:/msys64/mingw64/include/atk-1.0 -IC:/msys64/mingw64/include/cairo -IC:/msys64/mingw64/include/pixman-1 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/freetype2 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/harfbuzz -IC:/msys64/mingw64/include/libpng16 -IC:/msys64/mingw64/include/gdk-pixbuf-2.0 -IC:/msys64/mingw64/include/libpng16 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/glib-2.0 -IC:/msys64/mingw64/lib/glib-2.0/include -IC:/msys64/mingw64/include -LC:/msys64/mingw64/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -lfribidi -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
说明:从控制台编译时,我使用了包含文本 /
pkg-config --cflags gtk+-3.0`` 的命令。反引号表示在更高级别的编译命令之前 运行 pkg-config --cflags gtk+-3.0
,并将出现的任何文本插入到更高级别的编译命令中。 Code::Blocks 需要 Linker 设置下的文本。
我不明白搜索目录
在“设置”>“编译器...”中,在显示“编译器设置”的位置旁边,我单击了“搜索目录”。我知道你需要在这里做一些工作。在此之后,您返回 Linker 设置完成,您的 Code::Blocks 就可以开始了!
如果有人能在这里帮助我,或者如果我弄明白了,我很乐意完成,以防这对后代有所帮助。我有 GTK 编译,现在已经足够好了。
好吧,让我们从头说起。
- 不要使用 tarnyko 包,它们已经过时且不再维护
- 在 Windows 上获取 GTK+ 3 的官方方法是通过 MSYS2
- 不要盲目遵循您在 Internet 上找到的所有指南,将它们混合在一起并期望一切正常。事情发生了变化,在某些时候发布的广告在您阅读时可能已经过时并且完全错误。如果你用 3 种不同的食谱同时做一道菜,别指望它会很好吃。
所以:
- 删除 tarnyko 包的所有残余
- 删除 pkg-config-lite。
pkg-config
已经通过 MSYS2 安装,如果您按照官方安装
- 尝试在没有 Code::Blocks 集成的情况下使用 MSYS2 指南(pkg-config 检测,并编译一个简单的 GTK+ 程序)先工作
- 一旦成功,让它在 Code::Block 上运行应该是设置一些环境变量并指向正确的 pkg-config 的问题。
我在 Windows 7 上使用了 gtk+ bundle_2.24.10 32 位。
我是从 tarnkos 下载的,不需要在代码块 17.12 中更改单个设置。
原问题
我在安装 gtk 以开始在 Code::Blocks 上用 C++ 构建 GUI 时遇到问题。谁能把我推向正确的方向?我在 Lenovo 上 运行ning Windows 10(64 位)。
我尝试了安装指南 (https://www.youtube.com/watch?v=jvQXvTtSIQo), stack overflow (
在此之前我的PATH环境变量只记录了C:\Users\Owner\AppData\Local\Microsoft\WindowsApps;C:\Users\Owner\AppData\Roaming\npm;C:\Users\Owner\AppData\Local\atom\bin;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
我从 mingw.org 下载了 MinGW。这是对youtubelink的评论说官方比Code::Blocks可以安装的稳定。我将 C:\MinGW\bin 添加到 PATH。
尝试官方 GTK 安装站点,我下载了 MSYS2 并使用 pacman -Syu 安装核心系统包,然后使用 pacman -Su 进行更新。到此为止,所以我认为 gtk 已正式安装,我只需要让它与 Code::Blocks 通话即可。我将 C:\msys64\mingw64\bin 添加到 PATH 但这似乎不起作用。
我尝试在 http://www.tarnyko.net/dl/gtk.htm 安装 GTK 3.6.4 的一体式包,并将其解压缩到 C:\gtk。我现在在 PATH 中有 C:\gtk\bin。 GTK 应该以一种或另一种形式出现在我的道路上。我可以 运行 gtk3-demo 和 gtk-demo-application 从 CMD 但不是 MSYS2。我对此有点困惑。我想这可能与 MSYS2 的特定路径变量有关?但是它应该在之后搜索系统的 PATH 吗?而且我不知道如何更改该特定路径?可能改天再问。
所以类似的stack overflow,youtube,写的教程都说用pkg-config --cflags --libs gtk+-3.0
来检查合理的输出,看看我是否正确安装了gtk。我安装了
pkg-config-lite 以避免 How to install pkg config in windows? 描述的 glib 循环依赖问题和 f运行kly 我不明白。我将它添加到 C:\MinGW\bin 到我的路径中。现在我可以 运行 它了,但是得到:
Package gtk+-3.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-3.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-3.0' found
我试过 3.6.4 而不是 3.0。没有骰子。我只试了 3 个。不。我只能找到 gtk3 文件,而不是我在任何地方安装的实际版本。 pkg-config --cflags --libs 说我需要命名一个库,所以我只尝试 gtk hopiing 来获取包含它的库。没有。其余教程旨在让 Code::Blocks 编译器(我认为)包含 gtk。我希望这是唯一的障碍,我将能够得到休息。但是,如果有人可以帮助我完成其余的工作,我将不胜感激。
在这一点上我没有想法。有人可以帮助我吗?
感激不尽, 约翰
Liberforce 回答后的更多问题
感谢您写下https://www.gtk.org/download/windows.php!!我敢打赌它能帮助很多像我一样沮丧的新手。一切正常后,我会提供更适当的反馈。如果您能提供更多帮助,我一直在编译 C/C++ 程序。在开始之前,我想非常清楚我采取的具体步骤。步骤名称与您的书面说明相对应。
第 1 步:安装 MSYS2
好的,正在重置所有内容...
从 PATH 和计算机中删除了 C:/gtk 目录,也就是所有的 tarnyko 文件。
从 PATH 和计算机中删除了 C:/MinGW 目录,有效卸载。我读了你与 Simon (
因此,我在 PATH 中只有 C:\msys64(以及我之前拥有的,与 GTK 无关)。
已卸载 MSYS2(通过 Add/Remove 程序)并使用来自 www.msys2.org 的 x86_64 重新安装。在 pacman -Syu 上,我收到错误消息,"msys2-runtime and catgets are in conflict" 和 "msys2-runtime and libcatgets are in conflict." 输入 y 以删除两者。
我一直在卸载和重新安装,但我遇到了以下问题...(5/5) 升级 pacman 是在 100% 并弹出警告: 警告:终止 MSYS2 而不返回 shell 并再次检查更新 警告:例如关闭终端 window 而不是调用 exit
程序到此停止。我假设这意味着关闭 window。我这样做了,然后单击确定对话框 "Processes are running in session: Close anyway?." Window 现在打印 "Hangup signal received" 并且它不再响应。我使用任务管理器来杀死它。
在第一个 pacman -Syu 给了我选择 shell 的对话框后,通过桌面应用程序打开 MSYS2:MSYS2,Mingw-w64 32 位,Mingw-w64 64 位。我改为进入文件系统并为所有未来实例打开 C:\msys64\msys2_shell.cmd。
运行 pacman -Syu 完成安装包。我再次重启 MSYS2,然后 运行 pacman -Su 显示
:: Starting core system upgrade...
there is nothing to do
:: Starting full system upgrade...
there is nothing to do
pacman -Syuu 显示:
:: Synchronizing package databases...
mingw32 is up to date
mingw64 is up to date
msys is up to date
pacman -Su、pacman -Sy 和 pacman -Suu 同样显示一切正常。关闭并重新打开 C:\msys64\msys2_shell.cmd
pkg-cofig 只给出 "bash: pkg-config: command not found." 所以我 运行 pacman -S pkg-config 让它工作了。但是,https://github.com/msys2/msys2/wiki/MSYS2-installation 中提到的 update-core 找不到,pacman -S update-core 将不起作用。 pacman -Ss 核心出现:
msys/coreutils 8.26-2 (base) [installed]
The basic file, shell and text manipulation utilities of the GNU operating
system
和其他看似无关的文件。 pacman -Ss core 的结果同样似乎无关紧要。
pacman --version 显示:
.--. Pacman v5.0.1 - libalpm v10.0.1
/ _.-' .-. .-. .-. Copyright (C) 2006-2016 Pacman Development Team
\ '-. '-' '-' '-' Copyright (C) 2002-2006 Judd Vinet
'--'
This program may be freely redistributed under
the terms of the GNU General Public License.
运行 "pacman --needed -S bash pacman pacman-mirrors msys2-runtime" 揭示:
warning: bash-4.4.019-2 is up to date -- skipping
warning: pacman-5.0.1-5 is up to date -- skipping
warning: pacman-mirrors-20160112-1 is up to date -- skipping
warning: msys2-runtime-2.10.0-2 is up to date -- skipping
there is nothing to do
我退出了所有 msys shells,和 运行 C:\msys64\autorebase.bat,尽管不是在 32 位系统上。我相信当它说重新打开 msys2_shell.bat 时有错字,我没有。我打开了 msys2_shell.cmd。我再次使用 pacman -Suu 来显示一切正常。
第 2 步 -> 第 5 步(可选):安装构建工具
Openned C:\msys64\msys2_shell.cmd and 运行 "pacman -S mingw-w64-x86_64-gtk3" (GTK+3 package) and "pacman -S mingw-w64-x86_64-toolchain base-devel" (package to develop GTK+3 applications in other languages) (出现提示时默认为所有安装)。
未能编译 GTK+3 应用程序
重新启动计算机。打开 C:\msys64\msys2_shell.cmd。关注 https://developer.gnome.org/gtk3/stable/gtk-getting-started.html.
将简单的 window 教程文件放在 C:\Users\Owner\Desktop\test_code\example-0.c 中。当 运行ning gcc pkg-config --cflags gtk+-3.0 -o example-0 example-0.c pkg-config --libs gtk+-3.0 时,出现了我原来问题中的错误。使用 "pacman -Ss gtk3" 看到我认为我需要的两个包。 运行 "pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-gtkmm3" .
为了在 pkg-config --list-all | grep gtk
returns 什么也没有,即使在关闭并重新打开 C:\msys64\msys2_shell.cmd 之后也是如此。 "which gcc" returns:
其中:没有 gcc 在(/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32: /c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/: /usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
我在 C:\msys64\mingw64\include 下看到了 gtk-3.0。我不知道如何将其添加到路径中。 "echo $PKG_CONFIG_PATH" returns:
/usr/lib/pkgconfig:/usr/share/pkgconfig:/lib/pkgconfig
使用 GTK+3 在控制台中正确编译了一个文件
检查 GTK 是否在控制台中
我需要在 Mingw-w64 64 位 shell 中打开 MSYS2。这可以通过 MSYS2 的桌面应用程序执行,它会提示您要打开三个 shell 中的哪一个:MSYS2、Mingw32 和 Mingw64。具体来说,我用命令 mingw-w64-x86_64-toolchain
安装 gtk 意味着它只能通过这种方式访问。
这个 shell 中的命令表明我确实有 gtk:
$ pkg-config --modversion gtk+-3.0
--> 3.22.29
$ which gcc
--> /mingw64/bin/gcc
从 Mingw64 控制台编译示例代码
我参考了https://github.com/msys2/msys2/wiki/MSYS2-introduction来学习文件系统/驱动器挂载语法。我将从 https://developer.gnome.org/gtk3/stable/gtk-getting-started.html 中获取的示例代码放在 `/c/Users/Owner/Desktop/test_code/example-0.c' 中。我只是使用了我最喜欢的 IDE、Atom,但任何文本编辑器都可以。
打开 MSYS2 的 Mingw64 shell, cd /c/Users/Owner/Desktop/test_code/
, 用 gcc \
pkg-config --cflags gtk+-3.0` -o example-0 example-0.c 编译`pkg-config --libs gtk+-3.0`` ,然后用 ./example-0
不成功 Link GTK+3 和 Code::Blocks 编译器
我了解一些 Linker 设置
我进入了Code::Blocks。转到设置 > 编译器...确保使用选定编译器下的下拉框 select GNU GCC 编译器,并单击重置默认值,因为当我第一次安装 Code::Blocks 时很复杂。 Compiler Flags 下的复选框在重置后应该全部空白,因此我在 General 下选中了 "Have g++ follow the C++14 ISO C++ language standard [-std=c++14]",在 Warnings 下选中了 "Enable all common compiler warnings (overrides many other settings) [-Wall]"。
在显示编译器标志的位置旁边,我转到 Linker 设置并将文本添加到其他 linker 选项。我通过 运行ning pkg-config --cflags gtk+-3.0
:
-mms-bitfields -pthread -mms-bitfields -IC:/msys64/mingw64/include/gtk-3.0 -IC:/msys64/mingw64/include/cairo -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/pango-1.0 -IC:/msys64/mingw64/include/fribidi -IC:/msys64/mingw64/include/atk-1.0 -IC:/msys64/mingw64/include/cairo -IC:/msys64/mingw64/include/pixman-1 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/freetype2 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/harfbuzz -IC:/msys64/mingw64/include/libpng16 -IC:/msys64/mingw64/include/gdk-pixbuf-2.0 -IC:/msys64/mingw64/include/libpng16 -IC:/msys64/mingw64/include -IC:/msys64/mingw64/include/glib-2.0 -IC:/msys64/mingw64/lib/glib-2.0/include -IC:/msys64/mingw64/include -LC:/msys64/mingw64/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -lfribidi -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
说明:从控制台编译时,我使用了包含文本 /
pkg-config --cflags gtk+-3.0`` 的命令。反引号表示在更高级别的编译命令之前 运行 pkg-config --cflags gtk+-3.0
,并将出现的任何文本插入到更高级别的编译命令中。 Code::Blocks 需要 Linker 设置下的文本。
我不明白搜索目录
在“设置”>“编译器...”中,在显示“编译器设置”的位置旁边,我单击了“搜索目录”。我知道你需要在这里做一些工作。在此之后,您返回 Linker 设置完成,您的 Code::Blocks 就可以开始了!
如果有人能在这里帮助我,或者如果我弄明白了,我很乐意完成,以防这对后代有所帮助。我有 GTK 编译,现在已经足够好了。
好吧,让我们从头说起。
- 不要使用 tarnyko 包,它们已经过时且不再维护
- 在 Windows 上获取 GTK+ 3 的官方方法是通过 MSYS2
- 不要盲目遵循您在 Internet 上找到的所有指南,将它们混合在一起并期望一切正常。事情发生了变化,在某些时候发布的广告在您阅读时可能已经过时并且完全错误。如果你用 3 种不同的食谱同时做一道菜,别指望它会很好吃。
所以:
- 删除 tarnyko 包的所有残余
- 删除 pkg-config-lite。
pkg-config
已经通过 MSYS2 安装,如果您按照官方安装 - 尝试在没有 Code::Blocks 集成的情况下使用 MSYS2 指南(pkg-config 检测,并编译一个简单的 GTK+ 程序)先工作
- 一旦成功,让它在 Code::Block 上运行应该是设置一些环境变量并指向正确的 pkg-config 的问题。
我在 Windows 7 上使用了 gtk+ bundle_2.24.10 32 位。 我是从 tarnkos 下载的,不需要在代码块 17.12 中更改单个设置。