0

私は、Windows、Linux、および Mac OS X 用にビルドする大規模なクロス プラットフォーム プロジェクトの開発に携わっています。ソフトウェアのビルドは CMake で構成されています。

CMake スクリプトは、Windows 上の Visual Studio で正常に構成できるように設計されており、Makefile は現在、Linux および Mac OS X でのビルドに使用されています。

これまでのプロジェクトのほとんどすべての開発は、Windows で作業している人々によって行われ、Linux で少し作業が行われました。Mac OS X 10.7 を実行している Macintosh で Xcode 4.6 を使用してプロジェクトを開発することに興味がありますが、CMake ファイルがその開発環境に対して適切に構成されていないように見えるため、問題が発生しています。

Windows 以外のプラットフォームでは、必要なファイルのコピーや、ビルド プロセス中の単体テストの実行などの特定の操作に必要な環境の設定などを構成するために、多くのカスタム コマンドが作成されています。

Xcode は Visual Studio と同様の統合開発環境であるため、このビルド構成の概念があり、ソフトウェアがビルド出力ファイルをその構成概念を含むディレクトリ パスに入れると (つまり、多くのビルド ファイルはDebug、Release などの名前のフォルダーで終わるパス)

CMake は、このビルド構成の概念を処理するためのサポートを備えていると想定されており、利用されるメカニズムは Visual Studio でうまく機能します。Xcodeではうまくいかないようです。たとえば、当社のビルド エンジニアは CMake スクリプトを設計しているため、Windows では、ビルド構成を修飾するのに役立つ CMAKE_CFG_INTDIR 値を使用して多くのパスなどを構成できます。

CMAKE_CFG_INTDIR の使用は Xcode では機能しません。Macintosh 用のスクリプトは、実際にはビルド構成の概念を持たない Makefile を念頭に置いて作成されているためです。設定に使用されるカスタム コマンド内での CMAKE_CFG_INTDIR の使用は、値が $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) に解決されるため、Macintosh では失敗します。この値は、カスタム コマンドの実行時に定義されないため、値が正しく設定されず、ビルド操作が失敗します。

システムが Xcode を正常に構成できるようにするために何が必要かは不明です。これまでのところ、インターネットで検索しても、ビルド構成を確実に成功させるために何を使用すべきかについての洞察は得られていません。このプロジェクトを Xcode でビルドするように構成する方法を理解するのに役立つリソースは何ですか?

4

1 に答える 1

0

を使用して設定されたカスタム コマンドについて話している場合はadd_custom_command、構成ごとのビルド ディレクトリに関する問題を回避するために、「ジェネレータ式」を使用する必要があります。のドキュメントからadd_custom_command

への引数COMMANDは、構文 " " で "ジェネレータ式" を使用できます$<...>。ジェネレータ式はビルド システムの生成中に評価され、各ビルド構成に固有の情報が生成されます。

たとえば、「MyExe」というターゲットのビルド ディレクトリは、次のように参照できます。$<TARGET_FILE_DIR:MyExe>

ジェネレータ式は、 だけでなく、いくつかの CMake コマンドで使用できますadd_custom_command

より具体的な問題がある場合は、関連する詳細についてさらに質問する価値があります。

于 2013-03-30T01:04:38.820 に答える