CMake ツールは、プラグインおよびアプリケーションのプロジェクトを生成する場合に使用します。
プラグインまたはアプリケーションの CMakeLists.txt ファイルには、プロジェクトを生成するために必要なライブラリ、ソース ファイル、およびビルド関数の情報が含まれています。このファイルは、ソース コードや、プラグインにパッケージ化されている任意の mel スクリプトとともに、プラグインまたはアプリケーションのフォルダの最上位に配置されています。
このページでは、CMakeLists.txt ファイルの各部について説明します。
注: devkit のサンプル内にある CMakeLists.txt ファイルを独自に作成するための開始点として使用することができます。
CMakeLists.txt ファイルの構造は、次のとおりです。
最低限必要な CMake のバージョン
cmake_minimum_required(VERSION 2.8)
プロジェクト名。
set(PROJECT_NAME
たとえば、circleNode CMakeLists.txt ファイルのプロジェクト名セクションは次のようになります。
set(PROJECT_NAME circleNode)
pluginEntry.cmake ファイルのパス。この行はすべての CMakeLists.txt ファイルで同一です。
include($ENV{DEVKIT_LOCATION}/cmake/pluginEntry.cmake)
必要なリソース ファイルのリスト。
プロジェクトで複数のリソース ファイルを使用している場合は、各ファイルをスペースで区切ります。
set(RESOURCES_FILES myResource.xpm)
プロジェクトで複数の mel ファイルを使用している場合は、各ファイルをスペースで区切ります。
set(MEL_FILES <melFileName1> <melFileName2> <melFileName3>)
たとえば、circleNode サンプルには mel ファイルが含まれていて、CMakeLists.txt ファイル内に次の行があります。
set(MEL_FILES circleNode.mel)
プロジェクトで複数のソース ファイルを使用している場合は、各ファイルをスペースで区切ります。
set(SOURCE_FILES <sourceFileName1> <sourceFileName2> <sourceFileName3> ${MEL_FILES} ${RESOURCE_FILES})
たとえば、circleNode SOURCE_FILES 変数は次のように定義されます。
set(SOURCE_FILES circleNode.cpp ${MEL_FILES} )
プロジェクトで複数のライブラリが必要な場合は、各ライブラリをスペースで区切ります。
必要なライブラリを確認するには、C++ API リファレンスを参照してください。
たとえば、circleNode には OpenMaya および Foundation ライブラリのみが必要です。
set(LIBRARIES OpenMaya Foundation )
find_package() は Find<PackageName>.cmake ファイルを使用して、ビルドにパッケージを追加します。これらのファイルは Linux と MacOS の $DEVKIT_LOCATION/cmake/modules/、および Windows の %DEVKIT_LOCATION%\cmake\modules に配置されています。パッケージを追加するには、find_package(PackageName) を呼び出します。たとえば、Alembic パッケージを追加するには、FindAlembic.cmake が modules フォルダに存在することを確認してから、CMakeLists.txt ファイルに以下を書き込みます。
find_packaged(Alembic)
便宜上、devkit には一般に使用されるパッケージ用のマクロが含まれています。マクロの形式は find_<packageName> です。マクロを呼び出すには、各パッケージの各マクロを独自の行に配置します。たとえば、zlib および alembic パッケージを追加するには、CMakeLists.txt ファイルに次の 2 つの行を追加します。
find_zlib() find_alembic()
マクロは、次のパッケージで使用できます。
プラグインを作成している場合は、build_plugin() を追加します。スタンドアロン アプリケーションを作成している場合は、build_application() を追加します。