かむいさんち

エラーログと30分起きにくる尿意と戦うエンジニアの愚痴を書いてるだけです

XcodeGenで何かコケた

概要

  • 「何か」「よくわからないけど」といった言葉が好きだ
  • エンジニアという生き物は不明瞭だったり曖昧な言葉を嫌う傾向があるが、自分は入り口はふんわりすればするほど心理的な衝突は避けられると思っているし、いきなり的確に情報を整理整頓できる脳を所有していない
  • 今回もそんな「何か」知らんけど問題が起きたので書いてみる。原因や詳細がわかったらQiitaやペンギン村 Techブログにまとめようと思う

問題

  • 私物MBPのOSをMojaveにあげた時から(昨年秋から)、XcodeGenを使ってプロジェクトファイルを生成しようとすると以下のエラーを吐いていた
Parsing project spec failed: Unknown Target dependency: ["sdk": "libc++.tbd"]
  • 言葉の通り project.yml に設定しているTarget dependency情報の1つがUnknownと言われてしまっているのだが、これがネットになかなか転がってないため変に時間がかかってしまった。Google先生そりゃ無いぜ

XcodeGenについて

  • XcodeGenは .xcodeprj のconflict問題を解決してくれる神ツールなのだけれど、ymlを使った設定方法は公式ドキュメントが充実しているのもあるが、日本語情報がほとんど無いに等しい
  • 今だから言えるが、このツールも銀の弾丸かというとそうでは無い
  • 威力を発揮するのはiOSプロジェクトを同時にいじる人間が4人以上な時がせいぜいで、3人以下の場合はそこまでconflict問題が猛威を振るうことが無いと思っているためだ
    • 作業分担領域や設計時に責務の細分化がプロジェクトルールにある前提である。念の為
  • 逆を言えば大人数でiOSプロジェクトを触っており、今もなお .xcodeprj のconflict問題で悩んでいるのであれば、このツールほど頼りになるものはない。今すぐ導入し、詰まった内容を日本語でシェアして頂きたい。人間母国語と非母国語による変換作業ほど疲れるものは無い。

問題解決

  • 話を戻す
  • 上記の問題は何が原因だったかというと、マシンにインストールしたXcodeGenと最新のXcodeGenとの間に差異が発生していた可能性が高い
  • とりあえず入れ直してみると以下のようなエラーが吐かれた
$ brew install xcodegen
// 割愛 //
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/xcodegen
Target /usr/local/bin/xcodegen
already exists. You may want to remove it:
  rm '/usr/local/bin/xcodegen'

To force the link and overwrite all conflicting files:
  brew link --overwrite xcodegen

To list all files that would be deleted:
  brew link --overwrite --dry-run xcodegen 
  • ここで問題となっている原因と、解決策を提示してくれる
  • 今回自分は brew link --overwrite xcodegen を叩いた
  • これでxcodegenは無事にインストールが終わる
  • 改めて xcoden と叩くと、無事処理が完了した

まとめ

  • これでやっとxcodeprojが開ける!( = アプリが起動できる)
  • HomeBrewでinstallしたものに対しての対処法があまり理解できていなかったので、もっとHomeBrew理解しないとね