0

我有一个有趣的问题。我有一个构建文件的生成文件,然后对它们进行后期处理,然后将最终处理的文件复制到发布文件夹。

当我运行make时,它将正确构建所有内容,然后完成而不将最终目标文件复制到发布文件夹。我必须再次运行 make 才能看到生成的(新建的)文件比发布目标新,并将其复制过来。

我什sleep 5至延迟了最终发布目标检查,以允许任何文件 IO 完成并使用正确的时间戳更新新建的文件。

release : ./release/file.xml

./release/file.xml : gen/file_processed.xml sleep
    cp gen/file_processed.xml ./release/file.xml

gen/file_processed.xml : gen/file.xml
    python2.6 post_processing_scripts.py #saves output as gen/file_processed.xml

gen/file.xml : source_files
    command to compile gen/file.xml

sleep :
    sleep 5

不起作用的是 make 认为在它编译所有其他目标并执行睡眠配方等待 5 秒后,它仍然说gen/file_processed.xml比发布目标更旧。我必须重新运行 make 才能完成最后一步。

关于我可以添加什么来让生成的文件在根据发布目标检查它之前完成更新的任何想法?

非常感谢您的帮助,我很感激!

干杯,

布拉德

更新:

我更改了代码,以便删除有关始终执行睡眠命令的问题。但是,它的行为仍然与上述相同。

release : ./release/file.xml

./release/file.xml : gen/file_processed.xml
    cp gen/file_processed.xml ./release/file.xml

gen/file_processed.xml : gen/file.xml
    python2.6 post_processing_scripts.py #saves output as gen/file_processed.xml; sleep 5;

gen/file.xml : source_files
    command to compile gen/file.xml

我仍然需要运行两次 make 才能复制最终文件。

我将尝试确保这个示例准确地映射了我原来的 makefile 正在做的事情。

4

0 回答 0