Vala 的 Makefile

Gun*_*ack 2 makefile vala elementary-os

我是 Vala 的新手,正在学习为基本 OS Hera(基于 Ubuntu 18.04.3)编写 GTK 应用程序。我找不到任何关于如何为我的程序编写 make 文件的文档。

我希望在项目根目录的“src”文件夹下组织我的 .vala 文件。我也不知道如何为 vala 编译器指定可执行文件的名称。它只是从 vala 源文件的名称中获取名称。

有人可以为 Vala 中的 makefile 指定语法吗?

AlT*_*mas 5

Vala 编译器valac具有--output命名生成的二进制文件的参数。例如:

valac my_source_file.vala --output myprogram

使用valac --help找到更多的编译器选项。

一个简单的Makefile可能是:

sources = $(wildcard src/*.vala)

myprogram:
	valac $(sources) --output myprogram
Run Code Online (Sandbox Code Playgroud)

将其另存为Makefile项目目录并发出命令makemake myprogram,您将myprogram构建二进制文件。有几点需要注意:

  1. 制表符用于缩进,以防在示例中没有遇到
  2. 当您对源文件进行任何更改时,您将需要删除输出文件以重建它
  3. 通配符用于包含src目录中的所有 Vala 源文件

许多新的 Vala 项目都在使用Meson 构建系统,因为它非常快且语法更清晰。使用介子,一个简单的meson.build文件可能是:

project('myprogram project', 'vala', 'c')

dependencies = [
    dependency('glib-2.0'),
    dependency('gobject-2.0'),
]

sources = []
subdir('src')

executable('myprogram', sources, dependencies: dependencies)
Run Code Online (Sandbox Code Playgroud)

保存此项目的目录,然后在src目录中的meson.build文件,该文件明确列出的源文件:

sources += files(
    'a.vala',
    'b.vala',
    )
Run Code Online (Sandbox Code Playgroud)

请注意,subdir()使用meson.build文件src目录的源文件追加到sources变量。

要构建项目,首先要设置构建目录。从项目目录执行此操作:

meson setup builddir
Run Code Online (Sandbox Code Playgroud)

然后构建项目:

ninja -C builddir
Run Code Online (Sandbox Code Playgroud)

您可能需要使用ninja-build基于 Red Hat 的发行版,例如 Fedora。可执行文件myprogram位于builddir.

如果您更改源文件,则ninja -C builddir无需删除任何内容即可重建。

随着项目的增长,您会发现 Meson 比使用 Makefile 更易于管理。