[FLTK] macOS Montereyにアップグレードするとmakeできなくなった

[M1 Mac, Monterey 12.3.1, FLTK 1.3.8] 

macOSをBig SurからMonterey 12.3.1にアップグレードしたところ、makeができなくなりました。

エラー内容は以下の通りです。

$ make all
rm -rf ./obj/FileFinder.o ./bin/FileFinder FileFinder.app
clang++ -I/usr/local/include -I/usr/local/include/FL/images -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE -D_REENTRANT -std=c++11   -I./include -I/usr/local/include/FL -g -o obj/FileFinder.o -c src/FileFinder.cpp
clang: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk' [-Wmissing-sysroot]
In file included from src/FileFinder.cpp:1:
In file included from ./include/modalDialog.h:4:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:506:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:175:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__string:57:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:641:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:60:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string.h:60:15: fatal error: 'string.h' file not found
#include_next <string.h>

MacOSX12.1.sdkが見つからないために暴走しているようです。

正しくはMacOSX12.3.sdkなのですが、fltk-configが生成するオプション-isysrootがなぜか12.1を指定します。

仕方ないのでMakefileに以下のオプションを追記しました。これで正常にコンパイル&ビルドできます。

# 追加オプション(SDKのバージョンが間違っている場合。原因:fltk-configの不具合)
OPTION = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk

<略>

# cppファイルからoファイル作成 $<:依存ファイル
$(OBJDIR)/FileFinder.o: $(SRCDIR)/FileFinder.cpp
	$(COMPILER) $(CPPFLAGS) $(CPPFLAGS2) $(INCLUDE) $(DEBUG) $(OPTION) -o $@ -c $<

[XCode] ファイル名の変更

ファイル名を変更するには、ファイル内のclass名あるいはstruct名を右クリックしてRefactor – Renameを選択します。

他ファイル内の同じ名前も勝手にRenameされてしまうので要注意です。

XCodeのクセの強さに困っています。左側のProject Navigatorから直接ファイル名を変えられないというのはあまりにも独特です。

ファイルを複製して内容を変えていくという方法を定番化させている身としてはこれらの機能は害悪でしかないです。

XCodeにはBuild & Runだけ任せましょうか。VSCodeでの編集内容はXCodeにすぐ反映されました。Gitも機能しているようです。XCodeは非表示にしてこれまで通りVSCodeとFinderでコーディングします。

XCodeはSwiftで開発するには他に選択肢がないので仕方なく使っています。SwiftのドキュメントはOracleのJavaに比べるとスカスカで今ひとつです。

XCodeやSwiftへの苦言を集めたら面白い読み物になりそうです。

[XCode] 最新iOSのDeviceSupport入手方法

最新iOSを搭載した実機でテストする場合は、以下のサイトからDeviceSupportファイルを入手して、Macにコピーします。要再起動。

<コピー先>
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

<入手サイト>
https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport