"There are no rules for file processing ... for i386 architecture" when created using Xcode-bot

I have set up continuous integration for my iOS Xcode project, but I keep getting a lot of warnings when the Xcode bot creates my project. When I create (to run, test, or archive), I do not receive any warnings.

I think this has something to do with my project setup. I have an “internal” project in my main project containing the library I need. I am building both projects for the i386 architecture, so it can be run in a simulator (therefore, the Xcode bot can run tests).

The exact warning is below. I get this warning for every .m file in my internal project.

 Warning: no rule to process file '[…]/CDICMessage.m' of type sourcecode.c.objc for architecture i386 

Most of Google’s results on this warning relate to .h files that are mistakenly added to the "source compilation", but my .m files should be there, obviously.

Again, this warning only appears on the Xcode server, local assemblies are in order. The design is in order, otherwise the tests will succeed and an archive will be created. The biggest problem is that a bunch of warnings will drown out any other warnings that the project might have.

+8
ios xcode continuous-integration xcode-bots xcode-server
source share
4 answers

I also had this problem, but in slightly different circumstances. With the inclusion of the native Cocoa Touch Frameworks in iOS 8, I wanted to dump the use of the old, albeit incredible hack, to create iOS frameworks. In doing so, I began to receive the same warning ... TONS of them! I resolved them by removing i386 and x86_64 from the "Virtual architectures" in the target build settings.

I added both of these architectures in the "Architects" section and in the Build "Valid Architectures" setting, because I wanted to make sure that these architectures, available to me when I started lipo, to create a universal one (yup, Apple still does not give us a way to do it's near as far as I can tell)

REMOVAL of the i386 and x86_64 architectures from "Architecture" and "Virtual architectures". And setting "Only build active architecture" to "NO" for BOTH REPORT AND DISABLING. I managed to get the desired results without loading the warnings "There is no rule for processing ..." that I received in my .m files.

Hope this helps!

+3
source share

I have a similar problem, although in my case it is with multiple .c files (and one .m file). warning: no rule to process file '[...]/ioapi.c' of type sourcecode.cc for architecture x86_64

Now, obviously, I need the .c files and the .m file that I need to compile.

Clearly this is not limited to .m files. If anyone has any ideas for diagnosis to find out more about the problem, I would be happy to complete them.

+2
source share

I can not guarantee that this will solve your version of this problem. But I finally got my job.

The guy who said to remove i386 and x86_64 has a part of the answer.

For my purpose, I set up the architecture section as follows

 Architectures <multiple values> Debug Standard Architectures <$(ARCHS_STANDARD)> Any iOS Simulator SDK <i386 x86_64> Any iOS SDK <$(ARCHS_STANDARD)> Release Standard Architectures <$(ARCHS_STANDARD)> Any iOS Simulator SDK <i386 x86_64> Any iOS SDK <$(ARCHS_STANDARD)> Base SDK <Latest iOS> Build active Architecture only <No> Supported Platforms <iOS> Valid Architectures <armv7 arm64 i386 x86_64> 

Then I created a third-party goal. This is a collection (File-> new-> Target-> iOS-> Other-> Aggregate) I did not make changes to the build settings for this purpose, leaving them by default. In the Phase Build section, I dragged my previous target into the Target Dependencies section.

In the Run Script section, I posted the following.

 # define output folder environment variable UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal # Step 1. Build Device and Simulator versions xcodebuild -target MiniZip ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" xcodebuild -target MiniZip ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" # make sure the output directory exists mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" # Step 2. Create universal binary file using lipo "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" # Last touch. copy the header files. Just for convenience cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/" 

I tried to create the MiniZip library as a library with 4-sided fats, so when my Script says “MiniZip”, you obviously put any name on your target.

And my final result?

 Admins-Mac-mini-2:scratch JoeC$ file libminizip.a libminizip.a: Mach-O universal binary with 4 architectures libminizip.a (for architecture armv7): current ar archive random library libminizip.a (for architecture i386): current ar archive random library libminizip.a (for architecture x86_64): current ar archive random library libminizip.a (for architecture arm64): current ar archive random library 

Success! Well, for me one way or another. Hope this solves your problem!

Edit: I have to pay tribute to Ray Wenderlich. My Script is based on what it published.

+2
source share

same problem

 Unable to determine compiler to use - the abstract compiler specification is missing from this Xcode installation. 

or

 warning: no rule to process file '/Users/dfpo/Desktop/ImageCell.m' of type sourcecode.c.objc for architecture x86_64 

try opening a project or workpalce using "open path" and then select your Xcode

0
source share

All Articles