Vala 示例编译错误
Vala examples compile errors
从 MSYS2 项目为 Windows64 安装了 Vala。从 https://wiki.gnome.org/Projects/Vala/Examples 开始 运行 各种示例。一些示例会产生类似
的错误
..."Clutter Samples:Animated Actors"
D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty
D:\Projects\Vala\Examples>valac.exe --pkg clutter-1.0 clutter.vala -o clutter.exe
D:/Projects/Vala/Examples/clutter.vala.c:7:29: fatal error: clutter/clutter.h: No such file or direc
tory
#include <clutter/clutter.h>
^
compilation terminated.
error: cc exited with status 1
Compilation failed: 1 error(s), 0 warning(s)
... 和 "Vala GTK+ 3.x Examples: Basic Sample"
D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty
D:\Projects\Vala\Examples>valac.exe --pkg gtk+-3.0 gtk+3-hello.vala -o gtk+3-hello.exe
D:/Projects/Vala/Examples/gtk+3-hello.vala.c:17:21: fatal error: gtk/gtk.h: No such file or director
y
^
compilation terminated.
error: cc exited with status 1
Compilation failed: 1 error(s), 0 warning(s)
...和 Vala 集合:libgee 示例
D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty
D:\Projects\Vala\Examples>valac.exe --pkg=gee-0.8 libgee-collections.vala -o libgee-collections.exe
error: Package `gee-0.8' not found in specified Vala API directories or GObject-Introspection GIR di
rectories
Compilation failed: 1 error(s), 0 warning(s)
我意识到 pkg:gee-0.8 没有安装,但我确实使用 pacman 找到了 0.20.0-1。我不知道如何引用这个库?
$ pacman -Ss gee -v
Root : /
Conf File : /etc/pacman.conf
DB Path : /var/lib/pacman/
Cache Dirs: /var/cache/pacman/pkg/
Hook Dirs : /usr/share/libalpm/hooks/ /etc/pacman.d/hooks/
Lock File : /var/lib/pacman/db.lck
Log File : /var/log/pacman.log
GPG Dir : /etc/pacman.d/gnupg/
Targets : gee
mingw32/mingw-w64-i686-libgee 0.20.0-1
A collection library providing GObject-based interfaces and classes for
commonly used data structures (mingw-w64)
mingw64/mingw-w64-x86_64-libgee 0.20.0-1
A collection library providing GObject-based interfaces and classes for
commonly used data structures (mingw-w64)
显然我的安装是incorrect/incomplete。我需要更改或安装什么才能解决这些类型的问题?
感谢您的帮助!
对于gee-0.8
,0.8
是接口版本号,不是发布版本号。所以安装版本 0.20.0 并且相关的接口文件应该可用。这也适用于 Clutter 和 GTK+3。
运行valac.exe
直接可以出问题
通常在使用 msys2 编译某些东西时,您首先进入 msys2 shell 并正确设置 MSYSTEM
环境变量。 (msys2 根文件夹中有脚本和较新版本的可执行文件可以为您执行此操作)。
例如,当您设置 MSYSTEM=MINGW64
(注意:MINGW64
必须大写!)然后设置 运行 mingtty.exe
或 bash.exe --login
时,您可以检查你的 PKG_CONFIG_PATH
var:
$ echo $PKG_CONFIG_PATH
/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig
一定要了解三个MSYSTEM
设置的区别:
- MSYS - 仅用于 bootstrap 核心 msys2 系统并用于打包目的
- MINGW32 / MINGW64 - 使用 msys2 时您工作的 "normal" 环境(32 位/64 位)。
不同 MSYSTEM
环境的 pacman
包名称有前缀。 IE。以 mingw-w64-x86_64
开头的软件包在 MSYSTEM=MINGW64
环境中使用。
vala
使用 pkg-config
(一定要安装 mingw64/mingw-w64-x86_64-pkg-config
),当您使用 --pkg
和 pkg-config
指定内容时,然后搜索 .pc
文件(如 gee-0.8.pc
)。
mingw-w64-x86_64-libgee
软件包将其 pc 文件安装为 /mingw64/lib/pkgconfig/gee-0.8.pc
。
从 MSYS2 项目为 Windows64 安装了 Vala。从 https://wiki.gnome.org/Projects/Vala/Examples 开始 运行 各种示例。一些示例会产生类似
的错误..."Clutter Samples:Animated Actors"
D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty
D:\Projects\Vala\Examples>valac.exe --pkg clutter-1.0 clutter.vala -o clutter.exe
D:/Projects/Vala/Examples/clutter.vala.c:7:29: fatal error: clutter/clutter.h: No such file or direc
tory
#include <clutter/clutter.h>
^
compilation terminated.
error: cc exited with status 1
Compilation failed: 1 error(s), 0 warning(s)
... 和 "Vala GTK+ 3.x Examples: Basic Sample"
D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty
D:\Projects\Vala\Examples>valac.exe --pkg gtk+-3.0 gtk+3-hello.vala -o gtk+3-hello.exe
D:/Projects/Vala/Examples/gtk+3-hello.vala.c:17:21: fatal error: gtk/gtk.h: No such file or director
y
^
compilation terminated.
error: cc exited with status 1
Compilation failed: 1 error(s), 0 warning(s)
...和 Vala 集合:libgee 示例
D:\Projects\Vala\Examples>valac.exe --version
Vala 0.36.1-dirty
D:\Projects\Vala\Examples>valac.exe --pkg=gee-0.8 libgee-collections.vala -o libgee-collections.exe
error: Package `gee-0.8' not found in specified Vala API directories or GObject-Introspection GIR di
rectories
Compilation failed: 1 error(s), 0 warning(s)
我意识到 pkg:gee-0.8 没有安装,但我确实使用 pacman 找到了 0.20.0-1。我不知道如何引用这个库?
$ pacman -Ss gee -v
Root : /
Conf File : /etc/pacman.conf
DB Path : /var/lib/pacman/
Cache Dirs: /var/cache/pacman/pkg/
Hook Dirs : /usr/share/libalpm/hooks/ /etc/pacman.d/hooks/
Lock File : /var/lib/pacman/db.lck
Log File : /var/log/pacman.log
GPG Dir : /etc/pacman.d/gnupg/
Targets : gee
mingw32/mingw-w64-i686-libgee 0.20.0-1
A collection library providing GObject-based interfaces and classes for
commonly used data structures (mingw-w64)
mingw64/mingw-w64-x86_64-libgee 0.20.0-1
A collection library providing GObject-based interfaces and classes for
commonly used data structures (mingw-w64)
显然我的安装是incorrect/incomplete。我需要更改或安装什么才能解决这些类型的问题?
感谢您的帮助!
对于gee-0.8
,0.8
是接口版本号,不是发布版本号。所以安装版本 0.20.0 并且相关的接口文件应该可用。这也适用于 Clutter 和 GTK+3。
运行valac.exe
直接可以出问题
通常在使用 msys2 编译某些东西时,您首先进入 msys2 shell 并正确设置 MSYSTEM
环境变量。 (msys2 根文件夹中有脚本和较新版本的可执行文件可以为您执行此操作)。
例如,当您设置 MSYSTEM=MINGW64
(注意:MINGW64
必须大写!)然后设置 运行 mingtty.exe
或 bash.exe --login
时,您可以检查你的 PKG_CONFIG_PATH
var:
$ echo $PKG_CONFIG_PATH
/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig
一定要了解三个MSYSTEM
设置的区别:
- MSYS - 仅用于 bootstrap 核心 msys2 系统并用于打包目的
- MINGW32 / MINGW64 - 使用 msys2 时您工作的 "normal" 环境(32 位/64 位)。
不同 MSYSTEM
环境的 pacman
包名称有前缀。 IE。以 mingw-w64-x86_64
开头的软件包在 MSYSTEM=MINGW64
环境中使用。
vala
使用 pkg-config
(一定要安装 mingw64/mingw-w64-x86_64-pkg-config
),当您使用 --pkg
和 pkg-config
指定内容时,然后搜索 .pc
文件(如 gee-0.8.pc
)。
mingw-w64-x86_64-libgee
软件包将其 pc 文件安装为 /mingw64/lib/pkgconfig/gee-0.8.pc
。