10月にC++Builder/RAD Studio 12.2をリリースした際、「C++Builder 12.2 の優れた CMake 」のブログでCMakeに関する情報をご紹介いたしました。CMakeの使用方法については、複数のデモと多くのドキュメントを用意しています。このブログでは、その両方を簡単に紹介いたします。
Table of Contents
インストール
Win64のC++モダンツールチェーン向けの新しいCMakeサポートは、エンバカデロが推奨するツールチェーンであり、将来的にはCMakeへ再提出する予定の変更内容が含まれています。現時点ではCMake本家には、まだエンバカデロで修正した内容がマージされていないエンバカデロ独自のビルドとなりますので、GetItからCMakeをインストールしてください。
そしてこのCMakeと ninja (単一の EXE ダウンロードなので、任意のパスに配置) を使用してビルドできます。
CMakeを利用するための前提条件として、C++Builder 12.2 Patch2がインストールされていることを確認してください。 Patch2はPatch1で発生したリグレッションを修正するもので、VTKのような非常に複雑なライブラリをコンパイルするには、Patch2まで適用されている必要があります。
デモ
GitHub で公開されているRAD Studio 12 のデモには、VCL および FMX アプリケーションや、オープンソースライブラリである OpenCV、VTK、libsimdpp など、いくつかの CMake デモが含まれています。
デモに関するファイルは CPP/CMake パス内に配置されています。またCMakeとninjaがインストールされていることを確認し、オプションとしてOpenCV用のPythonもインストールし、バッチファイルのいずれかを実行してください。
例えば、CMakeとC++Builder 12.2を使用してJSON CPPをビルドする「make-jsoncpp.bat」というバッチファイルがあります。他にもZLib、libsimdpp、VTK、Google Test、Drogon、Brotli、OpenCV等をビルドするためのバッチファイルがあります。
また「make-vcl」、「make-fmx」、「make-package」などの例もあり、CMakeを使用してVCLおよびFMXアプリ、パッケージ、コンソールアプリをビルドします。
ドキュメント
バッチファイルは、CMakeの使用方法をできるだけ明確にするため、文字通り「クリックして実行する」ことに重点を置いています。しかし、ご自身でビルドを行いたい場合は、その機能について詳しく知っておく必要があります。こちらのCMakeのドキュメントには、必要な情報がすべて記載されています。
CMakeでビルドする際は、以下のようないくつかの変数を設定してください。
- ビルドするプラットフォーム (例えば、Windows )
- アーキテクチャ (例えば、x86-64)
- 使用するコンパイラ (例えば、bcc64x)
※将来的には上記以外に他のオプションも追加される可能性があります。
これらの変数を設定すれば、既存のCMakeLists.txt構成はそのまま動作するはずです。すべての情報はドキュメントページに記載されており、デモスクリプトを例として使用できます。
VCL および FMX アプリケーションまたはパッケージをビルドするには、C++Builder の「ターゲット」を設定し、VCL や FMX へのリンク、アプリケーションの種類(例:通常アプリケーション、パッケージなど)、動的リンクあるいは静的リンクかを指定します。 繰り返しになりますが、ドキュメントページには、サンプル CMake スクリプトを含む完全な情報が記載されています。また、GitHub のサンプルもご覧ください。
(CMakeを使用して独自のC++Builderアプリケーションをビルドする場合は、CMake + ninjaよりも効率的なため、、msbuild 経由でビルドするための –jobs パラメータも検討することをお勧めします。これは、C++Builder 12.2と新しいツールチェーンではデフォルトで有効になっているため、コマンドラインで「msbuild myproject.cbproj」を実行するだけで使用できます。)
一般的なライブラリ
一般的に、オープンソースのライブラリは修正せずにC++Builderでビルドできるはずです。ただし、一部のライブラリには BORLANDC用のifdef-sがあり、この定義を削除する必要のあることが稀にあります (現在はほとんど該当しませんが、もしこの問題に遭遇した場合は回避策になります)。MinGWでビルドできる場合、つまりmsys2で見つけられる場合は、エンバカデロのツールチェーンでビルドできるはずです。
何らかの理由で新しいツールチェーンの特定のサポートを追加する必要がある場合(これは必須ではありませんが、もしライブラリの不具合であれば、ライブラリの開発者へ。そしてエンバカデロのツールチェーンの不具合であれば、弊社へご連絡ください。)は、こちらで提案されているifdefに従ってテストすることができます。
どうかC++Builder 12.2でCMakeをご活用ください。また新しいC++Builder 12.2 ツールチェーンが提供するすべての機能を楽しんでいただければ幸いです。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition