build rules for xcode / iPhone

Jef picture Jef · Sep 30, 2011 · Viewed 15.2k times · Source

Im incorporating the facebook SDK into an update and i get compiler warnings for four files,in one of my targets each file gets two warnings like these.

[WARN]warning: no rule to process file '$(PROJECT_DIR)/APP_NAME/Facebook.h' of type sourcecode.c.h for architecture armv7

[WARN]warning: no rule to process file '$(PROJECT_DIR)/APP_NAME/Facebook.h' of type sourcecode.c.h for architecture armv6

and in the other target each file only generates one warning,

[WARN]warning: no rule to process file '$(PROJECT_DIR)/APP_NAME/FBConnect.h' of type sourcecode.c.h for architecture i386

in the documentation for the facebook SDK they tell me to add i386 to the valid architectures in the build settings, but they dont say anything about any 'build rules' the strange thing is that I already incorporated the same facebook SDK into another app without a single problem. The only difference that I can see is that this project already had two targets, and (each of) these warnings are only coming from one of them. Can anybody give me a clue how to make a build rule for these four files? do I need build rules for armv6 and armv7 AND i386?

the build settings are exactly the same except for a different -info.plist and different .pch file each. I should add that the facebook functionality is working fine on the simulator but not in any test device using either of the build targets.

thanks so much.

Answer

Jim Hayes picture Jim Hayes · Oct 15, 2011

Assuming you're using Xcode 4, it's likely that the dependency checker is confused because there are .h files in list of C files to be compiled.

So.... Navigate to your target's "Build Phases" tab. (Click on the project, then click on the target's name, then click on the "Build Phases" tab.)

Ensure that you didn't drag any .h files into the "Compile Sources" section.

It's common, when importing code, to just drag the whole lot into that section, not realizing that .h files aren't technically compiled, and the dependency checker isn't smart enough to spit out more helpful error message.