C ++コードをMacOSに移植するための推奨事項は何ですか? [閉まっている]

StackOverflow https://stackoverflow.com/questions/145621

  •  02-07-2019
  •  | 
  •  

質問

今後のプロジェクトでは、WindowsおよびLinuxでコンパイルされる既存のC ++コードをMacOS(ヒョウ)に移植する計画があります。ソフトウェアはコマンドラインアプリケーションですが、GUIフロントエンドが計画されている場合があります。 MacOSはg ++コンパイラを使用します。 Linuxと同じコンパイラーを使用することにより、問題があるようには見えませんが、常に問題があります。

移植中に注意すべき推奨事項や問題はありますか?

役に立ちましたか?

解決

アプリにはGUIがあり、どのGUI(ネイティブ/ Qt / Gtk +)がありますか?

そうでない場合、注意すべき問題は(Linuxと比較して)主に動的リンクの領域にあります。 OS Xは「-dylib」と「-bundle」を使用し、実際には2種類の動的ライブラリ(ランタイムロード可能と通常のもの)があります。 Linuxには1つの種類(-shared)しかなく、とにかくこれは緩やかです。

アプリにGUIがある場合、Objective-Cを使用してCocoaですべてを再コーディングする必要があります。つまり、新しい言語にもなります。一部の人々(MSなど)はCarbon(C ++ API)を使用していますが、段階的に廃止されています。新しいプロジェクトにはお勧めしません。

最高の運はQtまたはGtk +を使用することです。数日前にネイティブGtk +ポートが(再)発表されました( Imendio を参照)。 / p>

p.s。 OS XはもちろんX11バイナリも実行しますが、それを顧客にプッシュするのは難しい道かもしれません。 Aquaインターフェースに慣れており、それにより生産的です。 X11は非常に短期間のソリューションにすぎないと考えてください。

p.p.s。 OS Xに付属しているオープンソースアドオンライブラリの数は限られているため、バージョンが不足している場合があります。 Linuxでは「libxxx v.y.y」をインストールするようユーザーに簡単に要求できますが、OS Xでは複数のパッケージングアプローチ(fink、macports)があり、商用ツールの場合、必要なライブラリがアプリケーションに含まれていることが期待されます。 OS Xは、このために「アプリケーションバンドル」と「フレームワーク」を提供します(ローカルコピー、アプリケーションを自立させます)。 Linuxにはそのような概念はありません。これはビルドシステムにも大きな影響を与えます。すべてのプラットフォームで SCons のようなものを試してみたいと思うかもしれません。

他のヒント

Objective-Cにすべてを再コーディングする必要はありません。 Objective-CのC ++コードを使用できるようにするC ++とObjective-Cの奇妙な粗悪化があります。そのため、C ++のモデルコードとObjective-Cのビュー/コントローラーコードをインテリジェントに分割できます。 Objective-Cを使用するには、ソースコードファイルの末尾に.mではなく.mmを付けるだけで、同じ行であってもほとんどの正当なC ++およびObjective-C構文を混在させることができます。

私たちはMacOSには移植していませんが、LinuxからさまざまなUnixに移植してきました。主な作業領域はインストールおよび起動システムでした。 LinuxとWindowsの間で移植可能)。

Macintosh(macosx)は、基本的にはFreeBSDです(ただし、微調整されています)。 LinuxとFreeBSDでは、システムプログラミングにいくつかの違いがあります。主に、これらの違いはさまざまなシステムコール間に存在します。そのため、これがどれだけ影響するかは、アプリケーションの実行内容と実行中に行うOSシステムコールの種類によって決まります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top