C++ によるクロスプラットフォーム モバイル開発用の Visual Studio ツールには、Xcode プロジェクトを Visual Studio に移動するサポートが含まれています。Visual Studio では、クロスプラットフォーム ライブラリを作成し、他のプロジェクトとコードを共有できます。 Xcode からインポート ウィザードを使用すると、プロジェクトをインポートするプロセスと、C++ コードを分割して Xcode ターゲットに取り込み、スタティック ライブラリまたは共有コード プロジェクトとして利用するプロセスが簡略化されます。 iOS 固有のコードを Visual Studio で管理しながらも、Xcode を使用してストーリーボードとビルドを行うことができます。 Visual Studio と Xcode の間でコードを双方向に簡単に移動する方法については、「Xcode と Visual Studio 間の変更の同期」を参照してください。
Xcode からインポート ウィザードを使用する
この記事では、Xcode プロジェクトを Visual Studio に移動して、コードの共有とクロスプラットフォーム ソリューションを利用する方法について説明します。 前提条件として、プロジェクトをインポート、エクスポート、ビルドするために Mac を Visual Studio にペアリングする必要があります。 ペアリングを設定する手順については、「iOS を使用してビルドするためのツールのインストールおよび構成」を参照してください。 また、Xcode からインポート ウィザードで使用するために、Xcode プロジェクトをネットワーク経由で共有するか、Visual Studio コンピューターに移動する必要があります。
Xcode からインポートする
[ファイル] メニューで、[新規作成]、[インポート]、[XCode からインポートする] の順に選択します。 このコマンドにより、Xcode からインポート ウィザードが開始されてダイアログが表示されます。
[プロジェクトの選択] ウィンドウで参照ボタンを選択し、Xcode の .pbxproj ファイルを選択します。 [XCode プロジェクト ファイルの選択] ダイアログでプロジェクト ファイルに移動し、[開く] を選択します。
Xcode からインポート ウィザードで、[次へ] を選択します。
[宛先ターゲット] ウィンドウで、Visual Studio プロジェクトにインポートする Xcode プロジェクトからターゲットを選択します。 Xcode ターゲットは、Visual Studio のプロジェクトに似ています。ほとんどのターゲットは、バイナリを生成するコードとリソースのコレクションです。 Xcode からインポート ウィザードで宛先ターゲットとしてインポートできるのは、スタティック ライブラリではなく、バイナリを生成するターゲットだけです。 Xcode スタティック ライブラリのターゲットは、次のステップで操作します。
[インポートするターゲット] で選択されている各ターゲットについて、ウィザードは、別個のスタティック ライブラリ プロジェクトに分割できる C++ コード ファイルを自動的に検出し、[C++ プロジェクト項目] セクションに置きます。 その他のコードおよびリソースは、[XCode プロジェクト項目] セクションに残ります。 これらの項目は、ウィザードによるインポート処理が完了すると、Visual Studio 内の別個のスタティック ライブラリおよびアプリケーション プロジェクトになります。 既定では、単体テストおよびフレームワークのターゲットは、ウィザードによって別個のプロジェクトには分割されません。
各プロジェクトに含めるファイルを変更するには、上矢印と下矢印のボタンを使います。 各プロジェクト内のファイルを適切に設定できたら、[次へ] を選択して、先へ進みます。
[ライブラリ ターゲット] ウィンドウで、Xcode プロジェクトから Visual Studio プロジェクトにインポートするスタティック ライブラリ ターゲットを選択します。 このウィンドウでは、共有コード プロジェクトに配置するファイルと、スタティック ライブラリ プロジェクトに配置するファイルを選択することができます。 [インポートするターゲット] リストに含まれる各ターゲットについて、[共有コード プロジェクト項目] と [スタティック ライブラリ プロジェクト項目] に配置するファイルを、上矢印と下矢印のボタンを使って制御できます。
共有コード プロジェクトは、Visual Studio のプロジェクトとの間でソース ファイルのセットを共有する 1 つの方法です。 コードは、それ専用のプロジェクトとしてではなく、コードが含まれているプロジェクトの一部としてビルドされます。 共有コードを含むプロジェクトは、アーキテクチャと構成が異なる場合があります。 共有コード プロジェクトは、さまざまな種類のプラットフォーム用にビルドできるコードを含む単一のプロジェクトを提供するための最適な方法です。
各プロジェクト内のファイルを適切に設定できたら、[次へ] を選択して、先へ進みます。
Visual Studio 内のすべての iOS プロジェクトに対してフレームワークの検索パスとインクルード ヘッダーの検索パスを設定するには、[グローバル プロパティ] ウィンドウを使用します。 Visual Studio では、ソース コードの参照と IntelliSense のためにこれらのパスを使います。 これらのグローバル パスは、ヘッダーとフレームワークの共通のセットを使う iOS プロジェクトを作成するときに役立ちます。
これらのグローバルのパスは、Visual Studio の [オプション] ダイアログで設定することもできます。 それには、[ツール] メニューで、[オプション] を選択します。 [オプション] ダイアログで、[クロス プラットフォーム]>[C++]>[iOS]>[グローバル プロパティ] の順に展開します。
[次へ] を選択して続行します。
[フレームワーク] ウィンドウでは、プロジェクトに対して参照と IntelliSense のために Visual Studio で使用されるパスを構成します。 これらのパスは、Xcode プロジェクトによって参照される各フレームワークに対して、Visual Studio からアクセスできる必要があります。 ウィザードでは、Xcode プロジェクトでのフレームワーク参照が確認され、Visual Studio からフレームワークを検索できるかどうかが表示されます。 既にグローバル プロパティに設定してあるすべてのパスは、Visual Studio から検出できる必要があります。 例外は、フレームワーク リストに表示されます。 リストで X が付いているフレームワークごとに、Visual Studio がフレームワークを検索できるように、PC からアクセス可能なパスを指定してください。 参照ボタン [...] を使うと、[フォルダーの選択] ダイアログを使ってパスを検索できます。 フレームワークのパスは、ローカルのコピー、ネットワークでアクセスできる Mac 上の共有のいずれかを指定できます。
[次へ] を選択して続行します。
[プロジェクト設定] ウィンドウでは、ウィザードで作成した各プロジェクトのフレームワークとインクルード ヘッダー ファイルの検索パス設定を変更できます。 このウィンドウを使うと、グローバル設定とは異なるプロジェクト固有のパスを設定できます。
特定のプロジェクトに対するパスを設定するには、[宛先ターゲット] ドロップダウンで、プロジェクト ファイルを選択します。 その後、[フレームワークの検索パス] コントロールと [インクルード ヘッダーの検索パス] コントロールで値を設定します。 各コントロールの横にある参照ボタン [...] を使うと、[フォルダーの選択] ダイアログを使ってパスを検索できます。
Visual Studio でこの PC とペアリングされているリモート Mac がない場合は、[リモート コンピューターを構成] リンクが表示されます。 ペアリングを設定する手順については、「iOS を使用してビルドするためのツールのインストールおよび構成」を参照してください。
ウィザードの設定を使用して Xcode プロジェクトをインポートするには、[インポート] を選択します。
Xcode からインポート ウィザードによって、選択した Xcode プロジェクト ターゲットに対応するプロジェクトが Visual Studio で作成されます。 他の C++ プロジェクトと共有できるコードは、別個の共有コード プロジェクトとスタティック ライブラリ プロジェクトに分割されます。 残りのコードは、iOS ライブラリ プロジェクトとアプリケーション プロジェクトに配置され、Visual Studio からリモートでビルドできます。 Visual Studio と Xcode の間でコードを移動する方法の詳細については、「Xcode と Visual Studio 間の変更の同期」を参照してください。