【问题标题】:Makefile for ValaVala 的 Makefile
【发布时间】:2020-04-25 03:27:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: makefile vala elementary


    【解决方案1】:

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

    valac my_source_file.vala --output myprogram

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

    一个简单的Makefile 可以是:

    sources = $(wildcard src/*.vala)
    
    myprogram:
    	valac $(sources) --output myprogram
    

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

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

    许多新的 Vala 项目都在使用 Meson build system,因为它非常快并且语法更简洁。使用介子,一个简单的meson.build 文件可以是:

    project('myprogram project', 'vala', 'c')
    
    dependencies = [
        dependency('glib-2.0'),
        dependency('gobject-2.0'),
    ]
    
    sources = []
    subdir('src')
    
    executable('myprogram', sources, dependencies: dependencies)
    

    将此保存在项目目录中,然后在src 目录中的meson.build 文件中保存explicitly lists 源文件:

    sources += files(
        'a.vala',
        'b.vala',
        )
    

    注意subdir() 使用src 目录中的meson.build 文件将源文件附加到sources 变量。

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

    meson setup builddir
    

    然后构建项目:

    ninja -C builddir
    

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

    如果您更改源文件,那么ninja -C builddir 将重新生成,无需删除任何内容。

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

    【讨论】:

    • 我确实发现介子是要走的路。
    【解决方案2】:

    我猜介子是当今构建 vala 的方式。退房 https://mesonbuild.com/Vala.html

    【讨论】:

    • 这里不鼓励非常短的贡献。看看 AlThomas 所做的努力,让您了解什么才是好的答案。
    猜你喜欢
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多