Main Content

カスタムの CMake ツールチェーン定義の作成

CMake は、サードパーティが提供するオープンソースのビルド プロセス管理ツールです。MATLAB® コード (MATLAB Coder™ を使用する場合) または Simulink® モデル (Simulink Coder™ を使用する場合) から生成されたコードをビルドするために、このソフトウェアには、[ツールチェーン] ドロップダウン リストから選択できる CMake ツールチェーン定義が用意されています。target 名前空間を使用して、カスタムの CMake ツールチェーン定義を作成することもできます。カスタムの CMake ツールチェーン定義を内部データベースに追加すると、そのツールチェーンを使用して生成コードをビルドできるようになります。この例では、Ninja ジェネレーターを使用して CMake ツールチェーン定義を作成する方法を示します。ツールチェーン定義は、以下のオペレーティング システムのコンピューターで使用できます。

  • Windows® (MATLAB Support for MinGW®-w64 C/C++ Compiler がインストールされている場合)。

  • Linux®

  • Mac

target.Toolchain オブジェクトを作成し、その NameMakeToolTypeGenerator、および ToolchanFile を指定して、CMake が生成されたコードをビルドする方法を構成します。

tc = target.create("Toolchain", ...
                    Name="Example Custom CMake Toolchain", ...
                    MakeToolType="CMake", ...
                    Generator="Ninja", ...
                    ToolchainFile=fullfile(pwd, "ExampleCMakeToolchain.cmake"));

この Toolchain オブジェクトに対してサポートされているビルド タイプを指定します。

tc.Builder.SupportedBuildTypes(end+1) = target.create("CMakeBuildType", ...
                                        Name="FastMath", ...
                                        GeneratesDebugSymbols=false, ...
                                        DebugBuildType="FastMathWithDebug");

tc.Builder.SupportedBuildTypes(end+1) = target.create("CMakeBuildType", ...
                                        Name="FastMathWithDebug", ...
                                        GeneratesDebugSymbols=true);

エディターを使用して、以下の行が含まれたファイル ExampleCMakeToolchain.cmake を作成します。

# Example CMake toolchain

# Configure to use GCC
if(WIN32)
    list(APPEND CMAKE_PROGRAM_PATH "$ENV{MW_MINGW64_LOC}")
endif()
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")

# Add some custom build configurations:  FastMath, and FastMathWithDebug
set(CMAKE_C_FLAGS_FASTMATH "-Ofast")
set(CMAKE_CXX_FLAGS_FASTMATH "-Ofast")
set(CMAKE_C_FLAGS_FASTMATHWITHDEBUG  "-Ofast -g")
set(CMAKE_CXX_FLAGS_FASTMATHWITHDEBUG "-Ofast -g")

CMake ツールチェーン ファイルについては、https://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html を参照してください。

EnvironmentConfiguration プロパティの 1 番目の要素を使用して、Windows オペレーティング システム用のシステム環境設定コマンドおよびパスを指定します。

tc.EnvironmentConfiguration(1).HostOperatingSystemSupport.Linux = false;
tc.EnvironmentConfiguration(1).HostOperatingSystemSupport.Windows = true;
tc.EnvironmentConfiguration(1).HostOperatingSystemSupport.Mac = false;
tc.EnvironmentConfiguration(1).SystemPaths = ...
  {'$(MW_MINGW64_LOC)/bin','$(MATLAB_ROOT)/toolbox/shared/coder/ninja/$(ARCH)'};

EnvironmentConfiguration プロパティの 2 番目の要素を使用して、Linux および Mac オペレーティング システム用のシステム環境設定コマンドおよびパスを指定します。

tc.EnvironmentConfiguration(2) = target.create("EnvironmentConfiguration");
tc.EnvironmentConfiguration(2).HostOperatingSystemSupport.Linux = true;
tc.EnvironmentConfiguration(2).HostOperatingSystemSupport.Windows = false;
tc.EnvironmentConfiguration(2).HostOperatingSystemSupport.Mac = true;
tc.EnvironmentConfiguration(2).SystemPaths = ...
  {'$(MATLAB_ROOT)/toolbox/shared/coder/ninja/$(ARCH)'};

既定では、このソフトウェアは MATLAB に付属の CMake 実行可能ファイルを使用します。別のバージョンの CMake を指定するために、必要なパスを提供する target.CMake オブジェクトを作成できます。

オプションで、ツールチェーン定義をターゲット デバイスに関連付けます。たとえば、以下のようにします。

windowsProc = target.get("Processor","Intel-x86-64 (Windows64)");
tc.SupportedHardware(end+1) = target.create("HardwareComponentSupport", ...
                                                Component=windowsProc);

linuxProc = target.get("Processor","Intel-x86-64 (Linux 64)");
tc.SupportedHardware(end+1) = target.create("HardwareComponentSupport", ...
                                            Component=linuxProc);

macProc = target.get("Processor","Intel-x86-64 (Mac OS X)");
tc.SupportedHardware(end+1) = target.create("HardwareComponentSupport", ...
                                              Component=macProc);

ツールチェーン定義を内部データベースに追加します。

target.add(tc);
"target.add" summary:

    Objects added to internal database for current MATLAB session:
        target.Toolchain    "Example Custom CMake Toolchain"
    Objects not added because they already exist:
        target.Processor    "Intel-x86-64 (Linux 64)"
        target.Processor    "Intel-x86-64 (Mac OS X)"
        target.Processor    "Intel-x86-64 (Windows64)"

生成コードをビルドするためにカスタムのツールチェーン定義を使用するには、[ハードウェア] ペイン (MATLAB Coder アプリを使用する場合)、またはモデルの [コンフィギュレーション パラメーター] ダイアログ ボックス (Simulink Coder を使用する場合) で以下のようにします。

ターゲット デバイスを選択します。

  • MATLAB Coder を使用している場合 - [ハードウェア ボード]None - Select Device Below[デバイス ベンダー]Intel[デバイス タイプ]x86-64 (Windows64) に設定して、ターゲット デバイスを選択します。

  • Simulink Coder を使用している場合 - [ハードウェア実行] ペインで [デバイス ベンダー]Intel[デバイス タイプ]x86-64 (Windows64) に設定してターゲット デバイスを選択します。

[ハードウェア] ペイン (MATLAB Coder を使用している場合) または [コード生成] ペイン (Simulink Coder を使用している場合) で、[ツールチェーン] リストから Example Custom CMake Toolchain を選択します。[ビルド構成] リストには以下の値が含まれています。

  • Release

  • Debug

  • RelWithDebInfo

  • MinSizeRel

  • FastMath

  • FastMathWithDebug

  • Specify

レポートを検証します。MATLAB Coder を使用している場合は、[ハードウェア] ペインで [検証] をクリックします。Simulink Coder を使用している場合は、[詳細設定パラメーター][ツールチェーンの検証] をクリックします。

Validation report.

コードを生成すると、ビルド プロセスはカスタムのツールチェーンを使用して生成コードをビルドします。

カスタムのツールチェーン定義を内部データベースから削除する場合は、以下を入力します。

customToolChainDef = target.get("Toolchain","Example Custom CMake Toolchain");
target.remove(customToolChainDef);
"target.remove" summary:

    Objects removed from internal database:
        target.Toolchain    "Example Custom CMake Toolchain"

参考

| | | | | | | | |

関連するトピック

外部の Web サイト