gpt4 book ai didi

sqlite - 一个棘手的 GNU make 问题

转载 作者:行者123 更新时间:2023-12-03 17:36:23 24 4
gpt4 key购买 nike

下面是我希望我的 makefile 执行的一些伪代码:

if (A doesn't exist) or (B is newer than A):
rm -rf A
create an empty A
parallel_for X in (a large set of files):
if (X is newer than A):
update A using the contents of X

上述伪代码中,A是一个SQLite数据库,B是一个C头文件,“大文件集”中的每一个文件都是一个C源文件。

基本上,如果我只修改其中一个 C 源文件,我只想快速更新数据库,而不是从头开始重建整个数据库。

这类问题是否可以直接在 GNU make 中解决,还是我必须求助于使用脚本?

提前致谢!

最佳答案

像这样的东西应该可以工作:

A:: B
-rm -f $@
create_A $@

A:: $(all_X)
update_A_from_Xes $@ $?

$? 扩展为比 A 更新的 $(all_X) 的子集(有关详细信息,请参阅 Automatic VariablesGNU Make manual 部分) . 因此,update_A_from_Xes 必须根据所有 后续参数更新其第一个参数;它只会被调用一次。

double colons告诉 Make 运行以更新 A 的命令在 A 相对于 B 过时时与相对于 Xes 过时时不同。我不确定这两组命令是否会在它们都已过时的情况下运行;如果它们都运行,则 A::B 规则将首先运行。

关于sqlite - 一个棘手的 GNU make 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com