You could accomplish this by adding a Run Script build phase to your target, after Copy Bundle Resources. The script would look inside the bundle (which has just been freshly created by the rest of the build process) and generate your header file based on the resources it finds there.
You'd want to avoid regenerating the header when there aren't any new resources, because that would slow down your builds (since every .m file that depends on that header will be recompiled whenever the header is touched). A quick approximation: have your script start by comparing the modification time of the project.pbxproj file with that of the header, and exiting if the header is newer. A better (but somewhat more complicated) way: generate a scratch file, diff it with the current header, and replace the header with the scratch file if and only if they differ.
But honestly, this seems like a lot of work for not much benefit, not to mention that monolithic headers are a bad idea in general. Do your filenames change often enough that you need to refer to them indirectly? In other words, what problem are you trying to solve with all these #defines?