Dependencies 是否可以在cmake中包含生成的make样式(非cmake样式)依赖项文件?

Dependencies 是否可以在cmake中包含生成的make样式(非cmake样式)依赖项文件?,dependencies,makefile,cmake,vala,Dependencies,Makefile,Cmake,Vala,我正在使用,它首先编译到C,然后像正常情况一样从C编译 valac(Vala编译器)的一个功能是为.Vala文件生成“快速vapi”。fast vapi本质上是为.vala文件生成的头文件。fast VAPI的要点是,它们允许增量构建 因此,用于构建项目的简化命令序列如下所示: valac --fast-vapi=source1.vapi source1.vala # generate source1.vapi valac --fast-vapi=source2.vapi source2.val

我正在使用,它首先编译到C,然后像正常情况一样从C编译

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

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

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

valac -C --deps=source1.dep --use-fast-vapi=source2.vapi source1.vapi
这将为
source1.dep
中的
source1.dep
生成生成样式依赖项。例如:

source1.dep: source2.vapi source5.vapi ...
如果我正在编写一个普通的
Makefile
,我可以简单地执行
include source1.dep
。但是,对于
cmake
,我找不到任何类似的构造


如何在
cmake
中包含生成的make样式依赖项文件?

如果没有更改,Vala编译器将不会编写新的C文件。如果您的程序由多个源文件组成,并且您重新编译,那么Vala编译器将只更新已更改的C和头文件,然后您的C编译器的依赖关系进程可以处理其余的文件


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

因为您生成的依赖项是make风格的,可能会有所帮助?@apamasell:我说的是基于vapi的快速构建系统,而不是传统的“一步生成所有C文件”过程。我所说的依赖关系是生成的.c/.dep文件和fast VAPI之间的依赖关系,而不是.o文件和.h文件之间的依赖关系。看见我在我的原始帖子中给出了详细的解释。我认为您必须解析dep文件,并在CMake文件中添加_依赖项。