Compile project
コマンドを使用すれば,デザインモードを操作することなく,自動的にカレントプロジェクトをコンパイルすることができます。たとえば,ソースコードをGitリポジトリにコミットするたびにクラウド上で自動的にプロジェクトがコンパイルされるよう,GitHub Actionをセットアップすることができます。GitHubは最新のmacOSおよびXcodeを提供しているので,Apple Siliconターゲットもサポートできます。
ブログ記事: https://blog.4d.com/how-to-automate-the-compilation/
ワークフローの例: https://github.com/4D-JP/librezept/blob/main/.github/workflows/compile.yml
パラメーターを渡すことにより,外部プロジェクトをコンパイルすることもできます。外部プロジェクトをコンパイルする場合,プラグインやコンポーネントはロードされないことに留意してください。コンパイル対象のプロジェクトがプラグインやコンポーネントに依存している場合,それらのモジュールはコマンドを実行するプロジェクトにロードされている必要があります。これは仕様です。
macOSとWindowsには,システム標準の圧縮ツールが用意されており,ファイルやフォルダーを右クリックして手軽にアーカイブすることができます。作成されるのは.zip
形式のファイルです。一方のプラットフォームで作成したアーカイブは,通常,他方のプラットフォームでも展開することができますが,プロジェクトをアーカイブする場合は注意が必要です。
.zip
形式のアーカイブには,UTF-8エンコーディングでファイルやフォルダーのUnicodeパスが書き込まれます。MacとWindowsでは,圧縮ツールが使用するUnicodeの正規化方式が違います。MacはNFC,WindowsはNFKDです。たとえば「ä」という文字をMacで圧縮した場合,C3 A4
にエンコードされ,Windowsで展開すると61 CC 88
にデコードされます。つまり,Macでは文字とアクセント記号(日本語の濁点・半濁点を含む)を合成した文字が優先的に使用されますが,Windowsでは文字とアクセント記号を分解した文字列が優先的に使用されるということです。
Windowsのファイルシステムは,NFCとNFKDのファイルパスを区別し,実質的に同名のファイルを作成することができるようになっています。4Dのプロジェクトモードは,メソッドやフォームをNFCパスからロードするため,NFKDにパスが変換されてしまった場合,フォームやメソッドがみつからないことになります。
MacからWindowsに.zip
形式でファイルを移動する場合,システム標準の圧縮ツールは使用しないでください。代わりに7-ZipやWinRARを使用することができます。
追記: ビルド278080
以降,v19をmacOS 10.14.6で起動できるようになりました。今後,Mojaveは互換対応(compatible)となります。仕様上は対応しているものの,開発部で毎回の検証はしていないということです。実機による検証は,Catalina, Bug Sur, Montereyの3世代が対象となります。Bug Sur以降はIntelとApple Siliconアーキテクチャが存在するので,現在5種類のMacがサポートされています。
v19の技術的な最低プラットフォームはmacOS 10.14.4です(v19.0リリース当時と同じ)。macOS 10.13.6でv19のビルド278080
以降を起動した場合,起動時にアプリケーションがプラットフォームに対応していないという警告が表示されます。以下のブログ記事は調整前の実情を反映しています。
Mac版のv19.2および19r4の対応システムバージョンは「macOS 10.15.7 (Catalina)」以降となります。初期のv19ロングタイムサポート(LTS)バージョンおよびフィーチャーリリースは,macOS 10.14 Mojaveにも対応していましたので,仕様が変更されたことになります。
19r3のシステム要件は10.15.6(リリース当時の最新版Catalina)でしたが,サポート外のMojaveでも起動することができました。19r4をMojaveで起動することはできません。
4Dは,OpenSSLライブラリを使用しています。セキュリティ対策のため,当該ライブラリは定期的にアップデートすることが求められています。v18.5, 19.1, 19r3のOpenSSLバージョンは,1.1.1l
でした。19.2, 19r4では,1.1.1n
にアップデートされました。このバージョンは,macOS 10.15.7以上でなければ動作しません。結果的に4Dの最低システムバージョンも引き上げられることになりました。
注記: OpenSSLのバージョンは,Get database parameter
のセレクター94
(OpenSSL version) で確認することができます。OpenSSLを使用するのは,Webサーバーだけではありませんが,WEB Get server info
もバージョン情報を返します。
OpenSSLのバージョンが使用できないシステムで初期のv19.2および19r4を起動しようとすると,アプリケーションがクラッシュするかもしれません。クラッシュログには,OpenSSLがロードできないためのクラッシュである,というメッセージが記録されます。
DYLD, [0x1] Library missing
dyld: launch, loading dependent libraries
Dyld Error Message:
Library not loaded: @executable_path/../Frameworks/libssl.1.1.dylib
Referenced from: /Volumes/VOLUME/*/4D.app/Contents/MacOS/4D
Reason: no suitable image found. Did find:
4D.app/Contents/MacOS/../Frameworks/libssl.1.1.dylib: cannot load 'libssl.1.1.dylib' (load command 0x80000034 is unknown)
4D/4D.app/Contents/MacOS/../Frameworks/libssl.1.1.dylib: stat() failed with errno=1
4D/4D.app/Contents/MacOS/../Frameworks/libssl.1.1.dylib: cannot load 'libssl.1.1.dylib' (load command 0x80000034 is unknown)
4D/4D.app/Contents/MacOS/../Frameworks/libssl.1.1.dylib: stat() failed with errno=1
v19.2 (277563) および19r4 (277561) 以降,最初にバージョンチェックが実行され,プラットフォームが対応していない場合には警告ダイアログが表示されるようになりました。