4

我正在使用Vala,它首先编译为 C ,然后正常从 C 编译。

(Vala 编译器)的一个功能valac是为.vala文件生成“fast-vapi”。fast-vapi 本质上是为文件生成的头.vala文件。fast-vapis 的重点是它们允许增量构建。

因此,构建项目的简化命令序列如下所示:

valac --fast-vapi=source1.vapi source1.vala # generate source1.vapi
valac --fast-vapi=source2.vapi source2.vala # generate source2.vapi
valac -C --use-fast-vapi=source2.vapi source1.vapi # generate source1.c
valac -C --use-fast-vapi=source1.vapi source2.vapi # generate source2.c

在编写 的 cmake 依赖项时source1.c,一种方法是让它依赖每个 fast-vapi 而不是它自己的。这对于大型项目来说很快就会变得很麻烦,因为对其他 .vapis 的更改通常不会影响source1.vala. 所以valac支持--deps标志:

valac -C --deps=source1.dep --use-fast-vapi=source2.vapi source1.vapi

source1.dep这会为in生成 make 样式的依赖项source1.dep。例如:

source1.dep: source2.vapi source5.vapi ...

如果我写的是普通的Makefile,我可以简单地做include source1.dep。但是,我找不到任何类似的构造cmake

如何在 中包含生成的 make-style 依赖文件cmake

4

1 回答 1

1

Vala 编译器不会编写新的 C 文件,如果它们没有改变的话。如果您的程序由多个源文件组成并且您重新编译,Vala 编译器将只更新已更改的 C 和头文件,然后您的 C 编译器的依赖过程可以拾取其余部分。

Vala 编译器本身使用 make 和 autotools,不提供有关 Vala 编译器和构建系统之间依赖关系的任何信息。Vala 编译器被调用并生成 C 文件,然后自动工具确定 C 文件依赖关系的方法接管。没有理由不能在 CMake 中使用逻辑。

于 2012-08-15T13:29:58.477 回答