8

iOS XCode プロジェクトの継続的インテグレーションをセットアップしましたが、Xcode ボットがプロジェクトをビルドするときに多くの警告が表示され続けます。(実行、テスト、またはアーカイブ用に) ビルドすると、警告が表示されません。

これは、プロジェクトの設定に関係があると思います。メイン プロジェクトに、必要なライブラリを含む「内部」プロジェクトがあります。i386シミュレーターで実行できるように、アーキテクチャー用に両方のプロジェクトをビルドしています (Xcode ボットがテストを実行できるようにするため)。

正確な警告は以下のとおりです。.m内部プロジェクトのすべてのファイルに対してこの警告が表示されます。

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

この警告に関するほとんどの Google の結果は.h、誤って「コンパイル ソース」に追加されたファイルに対するものです.mが、明らかに私のファイルはそこにあるはずです。

繰り返しますが、この警告は Xcode サーバーでのみ表示されます。ローカル ビルドは問題ありません。それ以外の場合、ビルドは問題ありません。テストは成功し、アーカイブがビルドされます。最大の問題は、警告の山が、プロジェクトが生成する可能性のある他の警告をかき消してしまうことです。

4

4 に答える 4

2

I am having a similar problem, though in my case it's with several .c files (and a single .m file). warning: no rule to process file '[...]/ioapi.c' of type sourcecode.c.c for architecture x86_64

Now, obviously, I do need the .c files and the .m file to be compiled.

Clearly this isn't limited to .m files. If anyone has ideas for diagnostics to figure out more of the problem I would be happy to carry them out.

于 2015-02-06T00:19:44.860 に答える
2

これがこの問題のあなたのバージョンを解決することを保証することはできません。しかし、私はついに私の仕事を手に入れました。

i386 と x86_64 を削除するように言った人は、答えの一部を持っています。

私のターゲットでは、アーキテクチャセクションを次のように設定しました

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>

次に、別のターゲットを作成しました。これは集約 (File->new->Target->iOS->Other->Aggregate) このターゲットのビルド設定を変更せず、すべてデフォルトのままにしました。Build Phases セクションで、既存のターゲットを「Target Dependencies」セクションにドラッグしました。

Run Script セクションに以下を配置しました。

# 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}/"

私は MiniZip ライブラリを 4-way ファット ライブラリとして構築しようとしていたので、スクリプトで "MiniZip" と表示されている場所には、たまたまターゲットの名前が何であれ、明らかに配置することになります。

そして私の最終結果は?

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

成功!まあ、とにかく私のために。これであなたの問題も解決することを願っています!

編集: Ray Wenderlich の功績を認めるべきです。私のスクリプトは、彼が投稿したものに基づいています。

于 2015-02-10T21:57:22.360 に答える
0

同じ問題

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

また

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

「open the way」を使用してプロジェクトまたは職場を開こうとし、Xcode を選択します。

于 2015-03-19T13:51:17.013 に答える