From 0844190890021600f240fa912a33e9da64ec35ec Mon Sep 17 00:00:00 2001 From: matlabbe Date: Tue, 13 Feb 2024 09:14:43 -0800 Subject: [PATCH] rtabmap 0.21.4 (new formula) --- Formula/r/rtabmap.rb | 66 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Formula/r/rtabmap.rb diff --git a/Formula/r/rtabmap.rb b/Formula/r/rtabmap.rb new file mode 100644 index 0000000000000..a1ab937a14ef6 --- /dev/null +++ b/Formula/r/rtabmap.rb @@ -0,0 +1,66 @@ +class Rtabmap < Formula + desc "Visual and LiDAR SLAM library and standalone application" + homepage "https://introlab.github.io/rtabmap" + url "https://github.com/introlab/rtabmap/archive/refs/tags/0.21.4.tar.gz" + sha256 "242f8da7c5d20f86a0399d6cfdd1a755e64e9117a9fa250ed591c12f38209157" + license "BSD-3-Clause" + head "https://github.com/introlab/rtabmap.git", branch: "master" + + depends_on "cmake" => [:build, :test] + depends_on "g2o" + depends_on "librealsense" + depends_on "octomap" + depends_on "opencv" + depends_on "pcl" + depends_on "pdal" + + def install + args = %W[ + -DCMAKE_INSTALL_RPATH=#{rpath} + ] + system "cmake", "-S", ".", "-B", "build", *std_cmake_args, *args + system "cmake", "--build", "build" + system "cmake", "--install", "build" + end + + test do + # Test if main app is built and can be launched + output = if OS.linux? + # CI linux cannot start windows apps, causing qt plugins failing + shell_output("#{bin}/rtabmap-console --version") + else + shell_output("#{bin}/rtabmap --version") + end + assert_match "RTAB-Map: #{version}", output + + # Test c++ library + + # Required to avoid missing Xcode headers + # https://github.com/Homebrew/homebrew-core/pull/162576/files#r1489824628 + ENV.delete "CPATH" if OS.mac? && !MacOS::CLT.installed? + + rtabmap_dir = lib/"rtabmap-#{version.major_minor}" + (testpath/"CMakeLists.txt").write <<~EOS + cmake_minimum_required(VERSION 3.10) + project(test) + find_package(RTABMap REQUIRED COMPONENTS core) + add_executable(test test.cpp) + target_link_libraries(test rtabmap::core) + EOS + (testpath/"test.cpp").write <<~EOS + #include + #include + int main() + { + rtabmap::Rtabmap rtabmap; + printf(RTABMAP_VERSION); + return 0; + } + EOS + args = std_cmake_args + args << "-DCMAKE_BUILD_RPATH=#{lib}" if OS.linux? + system "cmake", ".", *args, "-DCMAKE_VERBOSE_MAKEFILE=ON", "-DRTABMap_DIR=#{rtabmap_dir}" + system "make" + assert_equal version.to_s, shell_output("./test").strip + end +end