鬱になったSEの憂鬱

仕事関係、プライベート、技術情報とかを書いていきます。(たぶん)

ld: library not found for -lPods clang: error: linker command failed with exit code 1 (use -v to see invocation)

ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)

環境:MacOS
Xcode:たぶん Xcode10

Debugのビルドは成功するが、Archiveがうまくいかない。


一通り試した。

・複数のプロジェクトを使っている場合はxcodeprojじゃなくてxcworkspaceの方を開かないといけない

とか

・General -> Signing を Automatically にせずに個別に指定しろ

とか

・プロジェクトごとのiOS Targetの数値がバラバラになっている

とか。


直んねぇ。


出てくるもの全部やったような気がするが、

直んねぇ。

 

途方に暮れて、ふと考えた。

 

「Debugなら動くんだから、ArchiveとDebugの設定に違いがあるのではないか??」


ここで、メニュー「Product -> Edit Scheme」の「Build Configuration」のところのプルダウンに「Debug」が選択できるのに気づく。
Debugを選択してArchiveすると、Archiveできた。なるほどそうか。
(ちなみに、変更する前はArchiveのBuild ConfigurationはDistributionになっていた。)


しかし、リリース版をDebug設定でコンパイルしてリリースするのはちょっと気持ちが悪い。
なのでひたすらDebug と Archiveで設定の違いがあるところを見つけてはDebugの設定に寄せてArchiveの項目の設定を変え、Archiveができる設定を探すことにした。


...

...


直んねぇ。
ふざけんな。

 

かれこれ3日悩んだ。

 

・Debugだとうまくいく。
・Archiveだとうまくいかない。


libPods.aがちゃんとコンパイルされているのも何度も確認している。


しかし、「library not found for -lPods」....


Archiveエラーのログを見てるとコマンドが出るから、それを実行してみると確かに同じエラーがでる。


とコマンドを見て気づく。

 

... -L/Users/***(PCのユーザ名)***/Library/Developer/Xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/WordPress/BuildProductsPath/Distribution-iphoneos/ ...

⇒フォルダ:「Distrubution-iphoneos」というところが、debugとarchiveで違いそう。
なるほど、このフォルダにlibPods.aが来てないのか????

 

試しにArchiveのBuild Settingsを「Debug」にして Archive。成功する。

その場合、

... -L/Users/***(PCのユーザ名)***/Library/Developer/Xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/WordPress/BuildProductsPath/Debug-iphoneos/ ...

ディレクトリ名が変わった。

`ls /Users/***(PCのユーザ名)***/Library/Developer/Xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/WordPress/BuildProductsPath/Debug-iphoneos/`
とすると、
・libPods.a
がいらっしゃる。

 

次に、ArchiveのBuild Settingsを「Distribution」にして Archive。失敗する。

その場合、

... -L/Users/***(PCのユーザ名)***/Library/Developer/Xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/WordPress/BuildProductsPath/Distribution-iphoneos/ ...

ディレクトリ名が変わった。

`ls /Users/***(PCのユーザ名)***/Library/Developer/Xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/WordPress/BuildProductsPath/Distribution-iphoneos/`
とすると、
・libPods.a
ない


そして、なぜか、同一階層に
/Users/***(PCのユーザ名)***/Library/Developer/Xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/WordPress/BuildProductsPath/Release-iphoneos/

というのがいて、そちらに
・libPods.a
いらっしゃる


んんん??
Podの設定がおかしいのか!

 

ということでDistributionの場合に出力するディレクトリの設定がどうなっているか確かめようとしたら

・Debug
・Release

の行しかない。
メインのプロジェクトにはいた「Distribution」と「Beta」がいない。


ははーーーーーん。

 

PodプロジェクトにはDistribution用の設定がないからRelease用のBuild Settingsで動いていて、メインプロジェクトとPodのコンパイル先が一致しないから「Not Found」なんだ!

 

と、ここで、

「え、じゃあ、ArchiveのBuild SettingsをReleaseにしたら動くとか???」

結果、動いた。

FXXK!!

 

Git管理しててそのままのはずなんだけどなーー

おしまい。