最近VisualStudioではなくXcode(5)を触っています。IDEを乗り換えると色々と面食らいますが、不可解だった挙動の1つがこれ。
build settingsに表示されるセクションが、プロジェクト管理下にあるファイルに依存して変化する。
例えば、Objective-CやC++などC系のソースが1つもないプロジェクトだとApple LLVM 5.0系のセクションが表示されなくなり、代わりにUser-Definedセクションに大量の項目が表示される。「C系のソースファイルが無いからLLVM系のセクションが表示されなくなるのは何となく分かるけどもUser-Definedはどこからやってきた?」とりあえず気持ち悪いのでコンパイラオプションがどんな状態なのか調べたい。
少し 調べた 所、Xcodeのプロジェクトやワークスペースをコマンドラインからビルドできる xcodebuild というコマンドがあり、これのオプションに -showBuildSettings というのがあることが分かった。
$ xcodebuild -project myProj.xcodeproj -target "myTarg" -showBuildSettings Build settings for action build and target Hoge: ACTION = build ALTERNATE_GROUP = staff ALTERNATE_MODE = u+w,go-w,a+rX ALTERNATE_OWNER = foo ALWAYS_SEARCH_USER_PATHS = NO (略) |
とりあえず、これでc++のソースが含まれる場合とそうでない場合とでdiffをとると、
$ diff /tmp/dump1.txt /tmp/dump2.txt 196a197 > PFE_FILE_C_DIALECTS = c++ |
と、これだけが違う。ので、C系のソースの有無でコンパイラオプションなどが大幅に変わってしまうのではなく、Xcodeのbuild settingの表示がそのような挙動になっているということが分かった。うーむ。
コメントを残す