web-dev-qa-db-ja.com

xcodebuildを使用して特定のアーキテクチャを構築するにはどうすればよいですか?

ポインタが32-bitであることに依存するレガシーコードがあり、xCodeBuildを使用してcommand lineからそのコードをビルドしたいと考えています。これは何らかの理由で機能しません。これが私が使うコマンドです:

xcodebuild -configuration Debug -Arch i386 
  -workspace MyProject.xcworkspace -scheme MyLib

これが私が得る出力です

[BEROR]No architectures to compile for 
  (ONLY_ACTIVE_Arch=YES, active Arch=x86_64, VALID_ARCHS=i386).

明らかに、xCodeプロジェクト設定でx86_64からi386のみを有効にしたため、VALID_ARCHSコードをビルドしようとして無惨に失敗しています。

64-bitライブラリが不要であることを理解させる方法はありますか?

21
pqnet

NOxcodebuildパラメータを使用する場合は、ONLY_ACTIVE_ArchARCHSに設定する必要があります。これらのパラメーターを渡すことにより、適切なアーキテクチャーを強制できます。

xcodebuild ARCHS=i386 ONLY_ACTIVE_Arch=NO -configuration Debug -workspace MyProject.xcworkspace -scheme MyLib

詳細は このリファレンス を参照してください。

46
xcodebuild ONLY_ACTIVE_Arch...
//or
Build Settings -> Build Active Architecture Only -> ONLY_ACTIVE_Arch

YES-接続されたデバイスの単一のアーキテクチャでバイナリをビルドします

NO-特定の-Archvalid architectures aka VALID_ARCHS)のバイナリが指定されている場合、または他の場合はすべてのアーキテクチャ用にバイナリをビルドします

デバッグ(ビルド時間を節約する)にはYesを使用し、リリースビルドにはNoを使用することをお勧めします。

enter image description here

注:シミュレータで実行するのが安全です

バージョンを確認するには、lipo -info[約]

0
yoAlex5

Build Settings -> Build Active Architecture Only-ONLY_ACTIVE_Arch

YES-Xcodeは、接続されているデバイスを検出し、アーキテクチャを決定し、そのアーキテクチャのみで構築します。

NO--Archvalid architectures aka VALID_ARCHS)のすべてのアーキテクチャにビルドするか(デフォルトで)、アーチ用にビルドします

バージョンを確認するには、lipo -info[約]

入力ユニバーサルファイルのアーキテクチャタイプを簡単にリストします。各アーカイブの名前をリストします。

lipo -info <binary_path>
//or
file <binary_path>

詳細 ここ および ここ

0
yoAlex5