Pre-processed, embedded Info.plist files are not updated anymore

Number:rdar://30510042 Date Originated:14-Feb-2017
Status:Open Resolved:
Product:Developer Tools Product Version:8.3 beta 2 (8W120l)
Classification:Other Bug Reproducible:Always
We have a target that builds a command line binary which has an embedded Info.plist. This Info.plist is pre-processed to add some versioning to the Info.plist. The Xcode build settings are roughly as follows:

INFOPLIST_FILE = src/...some-path.../Info.plist

Everything works as expected the first time the binary is built. However, when then content of the file Info.plist.h is changed, which also causes its last modification date timestamp to be updated, then Info.plist is *NOT* re-processed. Instead the version found in Derived Sources (Preprocessed-Info.plist) is used which still contains the old values. Only a clean build will cause the Info.plist to be re-processed.

Not only is that behavior a bug, I might be wrong but I think in previous Xcode versions this used to be working correctly (don't take my word for it, though)

Steps to Reproduce:
See above. Just make a very simple command line target with an embedded Info.plist; "Hello World" should be sufficient.

Expected Results:
Every time a built is made Xcode compare the last modification date of the already pre-processed Info.plist with the last modification date of the pre-process prefix header. If the pre-fix header has a newer date, the cached pre-processed Info.plist is deleted and re-created just like in case of a clean build.

Actual Results:
Once it has been pre-processed, it's never pre-processed again until you build clean.

8.3 beta 2 (8W120l)

This problem is also reproducible with Xcode 8.2.*, so it's not a new Xcode 8.3 bug!


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!