はじめに
初めての投稿なので、読みにくかったらすみません。よろしくお願いします。
使用環境
- macOS High Sierra
- Xcode 10.0.0
- Poco 1.9.0 (Homebrew で導入)
背景
openFrameworks に挑戦し始めてから色々作ったので、動いているところを録画して公開したくなった。Mac だと QuickTime を使ってキャプチャすることもできるが、あまりカーソルが映って欲しくない。
そこで、画面録画できるアドオン ofxVideoRecorde
を試してみることにした。
だが ofxVideoRecord
のサンプルを動かそうとしたら build error で下記の通り。
"Poco/Condition.h": file not found
どうやら Poco
が入っていないらしいので、ググってインストールする。面倒なので、今回は Homebrew で導入した。サイトを参考にして簡単なサンプルを作ってみたが、正常にコンパイルできた。
しかし、Xcode でビルドする際にうまくいかない。この「Xcode に Poco を認識させる」部分で手こずってしまったので、備忘録を残しておく。
症状
CLI上でコンパイルは正常にできたが(下記)、Xcode でビルドできない。
# リンク指定なしではエラーが出る
$ g++ ***.cpp
# リンクを指定すれば正常にコンパイルできる
# -I/usr/local/include` : インクルードパス
# -L/usr/local/lib` : ライブラリパス
# -lPocoFoundation` : リンク
$ g++ -I/usr/local/include -L/usr/local/lib -lPocoFoundation ***.cpp
Xcode エラーについてReveal on Log
を確認
-
g++ ***.cpp
でコンパイルしたときと同じエラーが出る - 恐らく、インクルードパスやリンクが正しく通っていないっぽい
原因
Xcode のプロジェクト自体でパスを正しく通す必要がある
対処
Xcode のプロジェクト自体で下記のようにパスを通す(暫定的な解決策)
-
Project Settings
-->Build Settings
に移動-
Linking --> Ohter Link Flags
:-lPocoFoundation
-
Search Paths --> Library Search Path
:/usr/local/lib
-
Search Paths --> Header Search Path
:/usr/local/include
-
まとめ
やっと動いた...これで画面録画とかできる...(多分)。
ただ、とりあえずビルドできるようにはなったが、どうも対処方法が汎用性に欠けててダサい気もする。リンカを張るとかの方がスマートなのかな?
あと今回の問題は、そもそも Homebrew でインストールしたせいかもしれない。何なら、ダウンロードしてきてビルドするのも解決策かも(試せてないから分からないけど)。
何にせよ、IDE のパス問題は毎回大変だ...。
Reference
- [POCO C++ Libraries の簡単な使用方法 - Qoosky](POCO C++ Libraries の簡単な使用方法 - Qoosky)
- iPhone開発 - Cachet Software
- Linker command failed with exit code 1でハマりまくったお話 - Qiita
- ld: library not found for -lPodsの対処法 - Qiita
- Using Poco and XCode - Apple Community