スポンサーリンク

Ubuntu 20でOpen3Dをソースからビルド

まずgitをインストール。

sudo apt install git

そしてOpen3Dをダウンロード。git cloneをするとレポジトリをダウンロードしてくれる。嫌ならブラウザから行ってDownload Zipとかでもいい。

git clone https://github.com/isl-org/Open3D ~/develop/Open3D

ダウンロードした~/develop/Open3 へ入り、util/ ディレクトリにあるinstall_deps_ubuntu.sh スクリプトを実行。これによりOpen3D依存しているものが導入されるらしい。

cd ~/develop/Open3D
sudo bash ./util/install_deps_ubuntu.sh

インストール先のディレクトリ作成

mkdir ~/develop/Open3D_install

ビルドのためのディレクトリ作成

mkdir ~/develop/Open3D/build

ビルドディレクトリへ行き、cmake をOpen3D/ に対して走らせる。この時、CMAKE_INSTALL_PREFIXに上で作成したインストールディレクトリを指定しておく

cd build
cmake .. -DCMAKE_INSTALL_PREFIX=~/develop/Open3D_install

make , 及び make install

make
make install

サンプルコードとビルド

サンプルコード

#include <open3d/Open3D.h>
#include <open3d/geometry/PointCloud.h>
#include <iostream>
#include <memory>

int main(){
  std::shared_ptr<open3d::geometry::PointCloud> pc =
    std::make_shared<open3d::geometry::PointCloud>();

  pc->points_.push_back(Eigen::Vector3d(0.0, 0.1,0.7));
  pc->points_.push_back(Eigen::Vector3d(1.0, 0.0,0.0));
  pc->points_.push_back(Eigen::Vector3d(0.5,-0.3,0.1));

  open3d::io::WritePointCloudToPLY("points.ply",*pc,true);
  std::cout << pc->points_.size() << std::endl;
}

ビルド

~/develop/Open3D_install/lib 以下の全てのlibOpen3D*.aをリンクしている。

filesystemを使うためlibstdc++fs.a、OpenMPのために -fopenmp を指定。

g++ test.cpp -I../Open3D_install/include -I../Open3D_install/include/open3d/3rdparty -L../Open3D_install/lib -lOpen3D -lOpen3D_3rdparty_assimp -lOpen3D_3rdparty_blas_mkl_merged -lOpen3D_3rdparty_blas_tbb_static -lOpen3D_3rdparty_civetweb_civetweb-cpp -lOpen3D_3rdparty_civetweb_civetweb -lOpen3D_3rdparty_curl -lOpen3D_3rdparty_embree_embree3 -lOpen3D_3rdparty_embree_embree_avx -lOpen3D_3rdparty_embree_embree_avx2 -lOpen3D_3rdparty_embree_lexers -lOpen3D_3rdparty_embree_math -lOpen3D_3rdparty_embree_simd -lOpen3D_3rdparty_embree_sys -lOpen3D_3rdparty_embree_tasking -lOpen3D_3rdparty_faiss -lOpen3D_3rdparty_filament_backend -lOpen3D_3rdparty_filament_bluegl -lOpen3D_3rdparty_filament_bluevk -lOpen3D_3rdparty_filament_filabridge -lOpen3D_3rdparty_filament_filaflat -lOpen3D_3rdparty_filament_filamat_lite -lOpen3D_3rdparty_filament_filament -lOpen3D_3rdparty_filament_filameshio -lOpen3D_3rdparty_filament_geometry -lOpen3D_3rdparty_filament_ibl -lOpen3D_3rdparty_filament_image -lOpen3D_3rdparty_filament_meshoptimizer -lOpen3D_3rdparty_filament_smol-v -lOpen3D_3rdparty_filament_utils -lOpen3D_3rdparty_filament_vkshaders -lOpen3D_3rdparty_glew -lOpen3D_3rdparty_glfw -lOpen3D_3rdparty_imgui -lOpen3D_3rdparty_ippicv_ippicv -lOpen3D_3rdparty_ippicv_ippiw -lOpen3D_3rdparty_jpeg -lOpen3D_3rdparty_jsoncpp -lOpen3D_3rdparty_liblzf -lOpen3D_3rdparty_png -lOpen3D_3rdparty_qhullcpp -lOpen3D_3rdparty_qhull_r -lOpen3D_3rdparty_rply -lOpen3D_3rdparty_tbb_tbb_static -lOpen3D_3rdparty_tbb_tbbmalloc_static -lOpen3D_3rdparty_tinyfiledialogs -lOpen3D_3rdparty_webrtc_webrtc -lOpen3D_3rdparty_webrtc_webrtc_extra -lOpen3D_3rdparty_zeromq -lOpen3D_3rdparty_zlib -lstdc++fs -fopenmp

余談

一週間近く掛けた気がするが、実はcmakeのビルドで失敗していただけでそこがちゃんどできればOpen3Dのほうは殆ど何も迷うことがなかった。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: