Skip to content

Instantly share code, notes, and snippets.

@UnaNancyOwen
Last active January 9, 2024 08:22
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save UnaNancyOwen/1e3fced09e4430ad0b7b to your computer and use it in GitHub Desktop.
Save UnaNancyOwen/1e3fced09e4430ad0b7b to your computer and use it in GitHub Desktop.
Building FLANN with Visual Studio

Building FLANN 1.8.4 with Visual Studio

Download

  1. FLANN 1.8.4(flann-1.8.4-src.zip)をダウンロードしてファイルを解凍する。(C:\flann-1.8.4-src)
    http://www.cs.ubc.ca/research/flann/#download
    https://github.com/mariusmuja/flann
     

CMake

  1. ソースコードの入力先とソリューションファイルの出力先を指定する。

    • Where is the source code: C:\flann-1.8.4-src
    • Where is build the binaries: C:\flann-1.8.4-src\build
  2. [Configure]を押してターゲットとなるVisual Studioを選択する。

  3. 各種設定を行う。

    • BUILD_C_BINDINGS ☑ (check)
    • BUILD_MATLAB_BINDINGS ☐ (uncheck)
    • BUILD_PYTHON_BINDINGS ☐ (uncheck)
    • CMAKE_CONFIGURATION_TYPES Debug;Release
    • CMAKE_INSTALL_PREFIX C:\Program Files\flann (or C:\Program Files (x86)\flann)
  4. [Add Entry]を押して以下の設定を追加する。

    Name: CMAKE_DEBUG_POSTFIX
    Type: STRING
    Value: -gd
    Description:
    * Debugビルドの生成ファイルのファイル名(最後尾)に付加する文字列。
  5. [Generate]を押してソリューションファイルを出力する。

Build

  1. Visual Studioを管理者権限で起動してFLANNのソリューションファイル(C:\flann-1.8.4-src\build\flann.sln)を開く。
    (Visual Studioを管理者権限で起動しないとINSTALLが失敗する。)

  2. serialization.hの92行目に以下のソースコードを追記する。
    (flann-1.8.4-src\src\cpp\flann\util\serialization.h)

    #ifdef _MSC_VER
    BASIC_TYPE_SERIALIZER( unsigned __int64 );
    #endif
  3. FLANNをビルドする。(ALL_BUILD)

    1. ソリューションの構成(Debug, Release)を設定する。
    2. ソリューションエクスプローラーからALL_BUILDプロジェクトを選択する。
    3. [ビルド]>[ソリューションのビルド]を押してFLANNをビルドする。
  4. FLANNをインストールする。(INSTALL)

    1. ソリューションエクスプローラーからINSTALLプロジェクトを選択する。
    2. [ビルド]>[プロジェクトのみ]>[INSTALLのみをビルド]を押してFLANNをインストールする。
      CMAKE_INSTALL_PREFIXで指定した出力先へ必要なファイルがコピーされる。

Environment Variable

  1. 環境変数FLANN_ROOTを作成してFLANNのパス(C:\Program Files\flann)を設定する。

  2. 環境変数Pathに;%FLANN_ROOT%\binを追加する。

Building FLANN 1.9.1 with Visual Studio

Download

  1. FLANN 1.9.1(flann-1.9.1.zip)をダウンロードしてファイルを解凍する。(C:\flann-1.9.1)
    https://github.com/mariusmuja/flann/releases/tag/1.9.1
     

CMake

  1. ソースコードの入力先とソリューションファイルの出力先を指定する。

    • Where is the source code: C:\flann-1.9.1
    • Where is build the binaries: C:\flann-1.9.1\build
  2. [Configure]を押してターゲットとなるVisual Studioを選択する。

  3. 各種設定を行う。

    • BUILD_C_BINDINGS ☑ (check)
    • BUILD_MATLAB_BINDINGS ☐ (uncheck)
    • BUILD_PYTHON_BINDINGS ☐ (uncheck)
    • CMAKE_CONFIGURATION_TYPES Debug;Release
    • CMAKE_INSTALL_PREFIX C:/Program Files/flann (or C:/Program Files (x86)/flann)
  4. [Add Entry]を押して以下の設定を追加する。      

           

       
    Name: CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
    Type: BOOL
    Value: ☑(check)
    Description:

       
    Name: CMAKE_DEBUG_POSTFIX
    Type: STRING
    Value: -gd
    Description:

    * Debugビルドの生成ファイルのファイル名(最後尾)に付加する文字列。

    1. [Generate]を押してソリューションファイルを出力する。

    Build

    1. Visual Studioを管理者権限で起動してFLANNのソリューションファイル(C:\flann-1.9.1\build\flann.sln)を開く。
      (Visual Studioを管理者権限で起動しないとINSTALLが失敗する。)

    2. FLANNをビルドする。(ALL_BUILD)

      1. ソリューションの構成(Debug, Release)を設定する。
      2. ソリューションエクスプローラーからALL_BUILDプロジェクトを選択する。
      3. [ビルド]>[ソリューションのビルド]を押してFLANNをビルドする。
    3. FLANNをインストールする。(INSTALL)

      1. ソリューションエクスプローラーからINSTALLプロジェクトを選択する。
      2. [ビルド]>[プロジェクトのみ]>[INSTALLのみをビルド]を押してFLANNをインストールする。
        CMAKE_INSTALL_PREFIXで指定した出力先へ必要なファイルがコピーされる。

    Environment Variable

    1. 環境変数FLANN_ROOTを作成してFLANNのパス(C:\Program Files\flann)を設定する。

    2. 環境変数Pathに;%FLANN_ROOT%\binを追加する。

Building FLANN 1.9.2 with Visual Studio

Download

  1. FLANN 1.9.2(flann-1.9.2.zip)をダウンロードしてファイルを解凍する。(C:\flann-1.9.2)
    https://github.com/mariusmuja/flann/releases/tag/1.9.2

  2. 依存するライブラリをビルドしてインストールする。

  3. CMakeLists.txtを修正する。

    • CMakeLists.txt#L149-L151
    + if (MSVC)
    +     find_package(lz4 CONFIG)
    +     get_target_property(LZ4_INCLUDE_DIRS lz4::lz4 INTERFACE_INCLUDE_DIRECTORIES)
    +     get_target_property(LZ4_LINK_LIBRARIES lz4::lz4 IMPORTED_LOCATION_RELEASE)
    + else()
    +     find_package(PkgConfig REQUIRED)
    +     pkg_check_modules(LZ4 REQUIRED liblz4)
    + endif()
    - find_package(PkgConfig REQUIRED)
    - pkg_check_modules(LZ4 REQUIRED liblz4)
    include_directories(${LZ4_INCLUDE_DIRS})

CMake

  1. ソースコードの入力先とソリューションファイルの出力先を指定する。

    • Where is the source code: C:\flann-1.9.2
    • Where is build the binaries: C:\flann-1.9.2\build
  2. [Configure]を押してターゲットとなるVisual Studioを選択する。

  3. 各種設定を行う。

    • BUILD_C_BINDINGS ☑ (check)
    • BUILD_MATLAB_BINDINGS ☐ (uncheck)
    • BUILD_PYTHON_BINDINGS ☐ (uncheck)
    • CMAKE_CONFIGURATION_TYPES Debug;Release
    • CMAKE_INSTALL_PREFIX C:/Program Files/flann (or C:/Program Files (x86)/flann)
  4. [Add Entry]を押して以下の設定を追加する。      

           

       
    Name: CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
    Type: BOOL
    Value: ☑(check)
    Description:

       
    Name: CMAKE_DEBUG_POSTFIX
    Type: STRING
    Value: -gd
    Description:

    * Debugビルドの生成ファイルのファイル名(最後尾)に付加する文字列。

    1. [Generate]を押してソリューションファイルを出力する。

    Build

    1. Visual Studioを管理者権限で起動してFLANNのソリューションファイル(C:\flann-1.9.2\build\flann.sln)を開く。
      (Visual Studioを管理者権限で起動しないとINSTALLが失敗する。)

    2. FLANNをビルドする。(ALL_BUILD)

      1. ソリューションの構成(Debug, Release)を設定する。
      2. ソリューションエクスプローラーからALL_BUILDプロジェクトを選択する。
      3. [ビルド]>[ソリューションのビルド]を押してFLANNをビルドする。
    3. FLANNをインストールする。(INSTALL)

      1. ソリューションエクスプローラーからINSTALLプロジェクトを選択する。
      2. [ビルド]>[プロジェクトのみ]>[INSTALLのみをビルド]を押してFLANNをインストールする。
        CMAKE_INSTALL_PREFIXで指定した出力先へ必要なファイルがコピーされる。

    Environment Variable

    1. 環境変数FLANN_ROOTを作成してFLANNのパス(C:\Program Files\flann)を設定する。

    2. 環境変数Pathに;%FLANN_ROOT%\binを追加する。

@njm137
Copy link

njm137 commented Mar 29, 2017

If you get an error about .serialize when compiling flann, I found a good stack overflow post that fixed it for me.
You just have to add the following around line 96 of serialize.h file.
#ifdef _MSC_VER
BASIC_TYPE_SERIALIZER(unsigned __int64);
#endif

Here's the post:
https://stackoverflow.com/questions/27424343/building-pcl-pcl-kdtree-left-of-serialize-must-have-class-struct-union/27425818#27425818?newreg=8aa2af6012084426a997a20ec1935006

@lyldev
Copy link

lyldev commented May 15, 2020

For MSVC10.0-32bit, this may be helpful too : flann-lib/flann#209 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment