Makefile不会执行目标文件的最终副本

时间:2012-09-25 17:42:05

标签: makefile

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

当我运行make时,它将正确构建所有内容,然后完成而不将最终目标文件复制到release文件夹。我必须再次运行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才能完成最后一步。

关于我可以添加什么以使生成的文件在针对发布目标进行检查之前完成更新的任何想法?

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

干杯,

布拉德

更新:

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

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正在执行的操作。

0 个答案:

没有答案