X-Plane SDK for Mac|Hello World (SDK 3)

Xcode14.2(14C18)

Plugin SDKダウンロード:https://developer.x-plane.com/sdk/plugin-sdk-downloads/
X-Plane SDK 3.0.3 for Windows, Linux and Mac
以下のところがX-Planee 11用のSDK、X-Plane 12用はこの下の方にある。

SDKの中身、MacとWindows両方で使える。

このSDKは以下のサンプルコードにも一緒に入っている。同じものになる。

サンプルコードのダウンロード

このサンプルコードにはSDK 3が一緒に入っているので、SDK 3のダウンロードは必要が無い。

ここにはそれぞれのサンプルコードがあります。
https://developer.x-plane.com/sdk/plugin-sdk-sample-code/
http://www.xsquawkbox.net/xpsdk/mediawiki/Category:C_Sample_Code

Hello World (SDK 3)をダウンロードしてみる。

下の方にある「profect for Xcode 6 or newer (64-bit Intel)」をダウンロード。
自分のMacはM1だけど大丈夫かな?

プロジェクトファイルからXcodeを起動

ダウンロードしたファイルの中身。全て揃っているので「Hello-World-SDK-3.xcodeproj」をダブルクリックするとXcoceが起動する。

初めてXcodeを起動する場合は以下のようになる。

英語なので意味不明、そのまま「Agree:同意」をクリック。

Select the platforms you would like to install
インストールするプラットフォームを選択してください。iOSとmacOSを選択。macOSだけでも良い。

What’s New in Xcode:Xcode の新機能
説明なのでそのまま、Continue(続ける)をクリック。

Xcodeから起動すると、選択画面が出るのかもしれない。その場合は、ここから「Open a project or file」をクリック。

「Hello-World-SDK-3.xcodeproj」を開く

以下の画面が出る。Deployment Info:導入情報 ここではDeployment Target 10.9になっている。つまり、これ以上のMacのバージョンで使えるようになるということらしい。OS X Mavericksが10.9になる。

プログラムを見るにはcppファイルをクリック。

右上に参加宇野オレンジのアイコンが警告の色になる。クリックするとプログラム内の警告ラインが表示され矢印のところにオレンジのラインが表示され、ここに何かを入れるような感じで表示さる。

右の警告アイコンをクリックすると下のように、その警告の内容が表示される。

Conversion from string literal to ‘char *’ is deprecated
文字列リテラルから「char *」への変換は非推奨です。

となっている。これはあくまで警告でそのまま無視しても問題なくビルドできる。。

ではビルドしてみます。左の上の▶マークをクリックしてビルドすることができる。
すると、左の横スペースを広げると、オレンジの警告の数々が出現する。

これはあくまで警告なのでxpiファイルが作成される。

作成された「Hello-World-SDK-3.xpl」は以下のところに書き出される。
/Users/ユーザー名/Library/Developer/Xcode/DerivedData/Hello-World-SDK-3-gdwkeqbtevtxclcjgdzzlskrtwmj/Build/Products/Debug/Hello-World-SDK-3.xpl

これでも問題無く、X-Planeで表示される。

警告を解決するには

この警告の大半もここから解決できる。

クリックすると下にエラー項目が表示される。

エラーは出るが「Hello World (SDK 3)」のウインドウが問題なく表示される。
しかし、エラーが出ているの意味がまったくわからない。

ビルドされたファイルはここに入る:/Users/kazuo/Library/Developer/Xcode/DerivedData/Hello-World-SDK-3-gdwkeqbtevtxclcjgdzzlskrtwmj/Build/Products/Debug/Hello-World-SDK-3.xpl

ファインダーから移動メニューを開き、ライブラリ->Developerと入っていくと分かりやすい。

最初の警告解決

一番上のcharのエラーはそのままでも問題ない。

Conversion from string literal to ‘char *’ is deprecated
文字列リテラルから「char *」への変換は非推奨です

以下が警告の意味を調べた結果

本来C++言語では、const char*からchar *への変換はコンパイルエラーとして扱われるます。しかし、C言語では「文字列リテラル(const char配列)からchar *への自動変換を特別に許可」しており、C言語から派生したC++言語でも歴史的経緯として、特例でこの自動変換を許容する(ただし警告付き)コンパイラが多いです。

warning: Traditional headermap style is no longer supported; please migrate to using separate headermaps and set ‘ALWAYS_SEARCH_USER_PATHS’ to NO. (in target ‘Hello-World-SDK-3’ from project ‘Hello-World-SDK-3’)
警告: 従来のヘッダーマップ スタイルはサポートされなくなりました。 別のヘッダーマップを使用するように移行し、「ALWAYS_SEARCH_USER_PATHS」を NO に設定してください。 (プロジェクト「Hello-World-SDK-3」のターゲット「Hello-World-SDK-3」内)

以下のように(cher*)をテキストの前に入れると解決。

XPLMDrawString(col_white, l + 10, t - 20, (char*)"Hello world! こんいちは世界!", NULL, xplmFont_Proportional);

以下の設定でもエラーが消える。とあるが消えない?

警告の解消の仕方いろいろ

Dylib (SDK/Libraries/Mac/XPLM.framework/XPLM) was built for newer macOS version (10.10) than being linked (10.9)

Dylib (SDK/Libraries/Mac/XPLM.framework/XPLM) は、リンクされている (10.9) よりも新しい macOS バージョン (10.10) 用にビルドされました。

つまりこれは指定された10.9より上のバージョン10.10でビルドされたと言う意味らしい。

展開ターゲット ‘MACOSX_DEPLOYMENT_TARGET’エラー

/Users/kazuo/Downloads/Hello-World-SDK-3/Hello-World-SDK-3.xcodeproj
The macOS deployment target ‘MACOSX_DEPLOYMENT_TARGET’ is set to 10.9, but the range of supported deployment target versions is 10.13 to 13.1.99.

/Users/kazuo/Downloads/Hello-World-SDK-3/Hello-World-SDK-3.xcodeproj
macOS の展開ターゲット ‘MACOSX_DEPLOYMENT_TARGET’ は 10.9 に設定されていますが、サポートされている展開ターゲット バージョンの範囲は 10.13 から 13.1.99 です。

つまり、プロジェクトの設定は10.9だが、Xcodeは10.13 から 13.1.99 までしかサポートしていない?

従って、10.13を選択すればMac OS 10.13以上のMacには使えるようになる。ということ?

10.13を選択すると上のようなエラーがまた出てくるがそれを選択すると以下のようなダイアログが出て、青色のボタンをクリックしていくとエラーが自動で解消されていく。

Migrate “Japanese.lproj” (Deprecated)
Migrating the “Japanese, deprecated” localization to “Japanese” is recommended for all projects. This will ensure localized resources are placed in “ja.lproj” directories instead of deprecated “Japanese.lproj” directories.

「Japanese.lproj」を移行 (非推奨)
すべてのプロジェクトで、「非推奨の日本語」ローカライズを「日本語」に移行することをお勧めします。 これにより、ローカライズされたリソースが非推奨の「Japanese.lproj」ディレクトリではなく「ja.lproj」ディレクトリに配置されるようになります。

「Migrate:移行する」するをクリックする。

その他にも「Migrate “French.lproj” (Deprecated)」「Migrate “English.lproj” (Deprecated)」「Migrate “German.lproj” (Deprecated)

以上全て同じように「Migrate」をクリック。

nable Base Internationalization
Enabling Base Internationalization is recommended for all projects.
可能なベースの国際化
すべてのプロジェクトで Base Internationalization を有効にすることをお勧めします。

「Enable」をクリック。

Build SettingsBuild Settings
Target ‘Hello-World-SDK 3’ -Enable Dead Code String
Enabling dead code string is recommended. This will update the DEAD_CODE_STRIPPING setting.
ターゲット ‘Hello-World-SDK 3’ – 死んだコード文字列を有効にする
デッド コード文字列を有効にすることをお勧めします。 これにより、DEAD_CODE_STRIPPING 設定が更新されます。

Use Recommended macOS Deployment Target
Updating the target’s macOS deployment Target to a newer value is recommended. This will update the MACOSX_DEPLOYMENT_TARGET build setting.
推奨される macOS 展開ターゲットを使用する
ターゲットの macOS 展開ターゲットを新しい値に更新することをお勧めします。 これにより、MACOSX_DEPLOYMENT_TARGET ビルド設定が更新されます。

Project ‘Hello-World-SDK 3’ -Enable Recommended Warning
This will enable the following recommended compiler warning:
・Quoted Include In Framework Header
Project ‘Hello-World-SDK 3’ – 推奨される警告を有効にする
これにより、次の推奨されるコンパイラ警告が有効になります。
・フレームワークヘッダーに引用されたインクルード

Project ‘Hello-World-SDK3’ -Automatically Select Architectures
Project ‘Hello-Word-SDK3’ overrides the Architectures setting. This will remove the setting sand allow Xcode to automatically select Architectures based on hardware available for the active platform and deployment target.
Project ‘Hello-World-SDK3’ – 自動的にアーキテクチャを選択
プロジェクト ‘Hello-Word-SDK3’ は、アーキテクチャ設定をオーバーライドします。 これにより、設定が削除され、アクティブなプラットフォームと展開ターゲットで利用可能なハードウェアに基づいて、Xcode が自動的にアーキテクチャを選択できるようになります。

Project ‘Hello-World-SDK3’ -Enable Dead Code Stripping
Enabling dead code stripping is recommended. This will update the DEAD_CODE_STRIPPING setting.
Project ‘Hello-World-SDK3’ – デッド コード ストリッピングを有効にする
デッド コード ストリッピングを有効にすることをお勧めします。 これにより、DEAD_CODE_STRIPPING 設定が更新されます。

「Perform Changes:変更の実行」をクリック。

Build Settings
Use Recommended macOS Deployment Target

Updating the target’s macOS deployment target to a newer value is recommended. This will update the MACOSX_DEPLOYMENT_TARGET build setting.
推奨される macOS 展開ターゲットを使用する
ターゲットの macOS 展開ターゲットを新しい値に更新す

「Perform Changes:変更の実行」をクリック。

Traditional headermap style is no longer supported; please migrate to using separate headermaps and set ‘ALWAYS_SEARCH_USER_PATHS’ to NO.
従来のヘッダーマップ スタイルはサポートされなくなりました。 別のヘッダーマップを使用するように移行し、「ALWAYS_SEARCH_USER_PATHS」を NO に設定してください。

以下のところから「No」にすることができる。

この状態でビルドすると、最終的に1つだけの警告になる。
色々調べると「char *」を「const cher*」に変更すると良いとなっているが、それをやるとエラーになってしまう。ライブラリの方を変更する必要があるのかもしれないが、良くわからないし、警告だけなのでこのままで最終ビルドにすることにした。

問題なくビルドできているのでいいと思う。