CMake Modules for Kinect SDK

CMake Modules for Kinect SDK

CMakeは、オープンソースソフトウェアで広く使われているクロスプラットフォームのビルドツールです。
簡単な設定スクリプト(CMakeLists.txt)をもとに様々な開発環境向けにビルドファイルを生成することができます。
OpenCVPoint Cloud Libraryなど多くのライブラリで利用されています。

CMakeは、ライブラリごとに用意されているモジュールを使って設定を取得します。
しかし、CMakeにはKinect for Windows SDKのためのモジュールは用意されていないため、そのままではfind_package()で設定を取得することができません。
そこで、Kinect for Windows SDK v1/v2の設定を取得するためのモジュールを作成しました。
このモジュールはKinect SDKのすべての機能(基本ストリーム、応用ストリーム)をサポートします。

Download Modules

以下のリンクからFindKinectSDK.cmakeFindKinectSDK2.cmakeをダウンロードしてお使いいただけます。

CMake Module for Kinect SDK v1

CMake Module for Kinect SDK v2

Module Results

CMakeのモジュールはfind_package()でパッケージを検索した結果、環境に合わせたパスなどの設定をマクロに定義します。
FindKinectSDK.cmakeFindKinectSDK2.cmakeは環境変数KINECTSDK10_DIRKINECTSDK20_DIRをもとにKinect SDK v1/v2を検索します。
その結果、環境に合わせて主に以下のマクロを定義します。*1

*1 詳細はモジュールを御覧ください。

FindKinectSDK Macros

KinectSDK_FOUND Return “TRUE” when Kinect SDK v1 found. Otherwise, Return “FALSE”.
KinectSDK_INCLUDE_DIRS Kinect SDK v1 include directories.
(${KinectSDK_DIR}/inc)
KinectSDK_LIBRARY_DIRS Kinect SDK v1 library directories.
(${KinectSDK_DIR}/lib/x86 or ${KinectSDK_DIR}/lib/amd64)
KinectSDK_LIBRARIES Kinect SDK v1 library files.
(${KinectSDK_LIBRARY_DIRS}/Kinect10.lib)

FindKinectSDK2 Macros

KinectSDK2_FOUND Return “TRUE” when Kinect SDK v2 found. Otherwise, Return “FALSE”.
KinectSDK2_INCLUDE_DIRS Kinect SDK v2 include directories.
(${KinectSDK2_DIR}/inc)
KinectSDK2_LIBRARY_DIRS Kinect SDK v2 library directories.
(${KinectSDK2_DIR}/Lib/x86 or ${KinectSDK2_DIR}/Lib/x64)
KinectSDK2_LIBRARIES Kinect SDK v2 library files.
(${KinectSDK2_LIBRARY_DIRS}/Kinect20.lib)
KinectSDK2_COMMANDS Copy commands of redist files for application functions of Kinect SDK v2.
(If uncheck the box of all application features, this variable has defined empty command.)

How to use Modules in CMakeLists

FindKinectSDK.cmakeFindKinectSDK2.cmakeは以下のように利用できます。
簡単なCMakeListsのチュートリアルも書いたので、こちらも参照してください。

How to Find Kinect SDK v1

cmake_minimum_required( VERSION 3.6 )

# Create Project
project( solution )
add_executable( project main.cpp )
set_property( DIRECTORY PROPERTY VS_STARTUP_PROJECT "project" )

# Find Kinect SDK v1
set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${CMAKE_MODULE_PATH} )
find_package( KinectSDK REQUIRED )

# Project Settings for Kinect SDK v1
if( KinectSDK_FOUND )
  # Additional Include Directories
  # [C/C++]>[General]>[Additional Include Directories]
  include_directories( ${KinectSDK_INCLUDE_DIRS} )

  # Additional Library Directories
  # [Linker]>[General]>[Additional Library Directories]
  link_directories( ${KinectSDK_LIBRARY_DIRS} )

  # Additional Dependencies
  # [Linker]>[Input]>[Additional Dependencies]
  target_link_libraries( project ${KinectSDK_LIBRARIES} )
endif()

How to Find Kinect SDK v2

cmake_minimum_required( VERSION 3.6 )

# Create Project
project( solution )
add_executable( project main.cpp )
set_property( DIRECTORY PROPERTY VS_STARTUP_PROJECT "project" )

# Find Kinect SDK v2
set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" ${CMAKE_MODULE_PATH} )
find_package( KinectSDK2 REQUIRED )

# Project Settings for Kinect SDK v2
if( KinectSDK2_FOUND )
  # Additional Include Directories
  # [C/C++]>[General]>[Additional Include Directories]
  include_directories( ${KinectSDK2_INCLUDE_DIRS} )

  # Additional Library Directories
  # [Linker]>[General]>[Additional Library Directories]
  link_directories( ${KinectSDK2_LIBRARY_DIRS} )

  # Additional Dependencies
  # [Linker]>[Input]>[Additional Dependencies]
  target_link_libraries( project ${KinectSDK2_LIBRARIES} )

  # Post Build Event
  # [Build Events]>[Post Build Event]>[Command Line]
  add_custom_command( TARGET project POST_BUILD ${KinectSDK2_COMMANDS} )
endif()

Sample Program for Kinect SDK v2

このモジュールは、実際にKinect SDK v2のサンプルプログラムで使用しています。

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です