enable packages at the beginning (#16)

* enable packages at the beginning
This commit is contained in:
koide3 2024-04-08 13:45:01 +09:00 committed by GitHub
parent 81829663cb
commit d09f9202bb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 60 additions and 120 deletions

View File

@ -23,7 +23,7 @@ jobs:
- name: Install Dependencies
run: |
sudo apt-get -y update
sudo apt-get install -y build-essential cmake python3-pip pybind11-dev libeigen3-dev libfmt-dev libtbb-dev libomp-dev libpcl-dev libgtest-dev lcov
sudo apt-get install --no-install-recommends -y build-essential cmake python3-pip pybind11-dev libeigen3-dev libfmt-dev libtbb-dev libomp-dev libpcl-dev libgtest-dev lcov
pip install -U setuptools pytest pytest-cov numpy scipy
- name: Build (C++)
@ -40,7 +40,7 @@ jobs:
- name: Build (Python)
run: |
python3 setup.py build && python3 setup.py install --user
pip install . --user
- name: Test (Python)
run: |

View File

@ -12,7 +12,7 @@ on:
workflow_dispatch:
jobs:
build:
test:
runs-on: ubuntu-22.04
steps:
@ -23,7 +23,7 @@ jobs:
- name: Install Dependencies
run: |
sudo apt-get -y update
sudo apt-get install -y build-essential cmake python3-pip pybind11-dev libeigen3-dev libfmt-dev libtbb-dev libomp-dev libpcl-dev libgtest-dev
sudo apt-get install --no-install-recommends -y build-essential cmake python3-pip pybind11-dev libeigen3-dev libfmt-dev libtbb-dev libomp-dev libpcl-dev libgtest-dev
pip install -U setuptools pytest numpy scipy
- name: Build
@ -33,5 +33,5 @@ jobs:
cmake --build . -j$(nproc)
ctest -j$(nproc)
cd ..
python3 setup.py build && python3 setup.py install --user
pip install . --user
pytest src/example/basic_registration.py

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.16)
project(small_gicp VERSION 0.0.1 LANGUAGES CXX)
project(small_gicp VERSION 0.0.1 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
@ -13,18 +13,31 @@ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(CMAKE_POSITION_INDEPENDENT_CODE "Generate position-independent code" ON)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
# Build options
option(BUILD_HELPER "Build helper library" ON)
option(BUILD_TESTS "Build tests" OFF)
option(BUILD_EXAMPLES "Build examples" OFF)
option(BUILD_BENCHMARKS "Build benchmarks" OFF)
option(BUILD_PYTHON_BINDINGS "Build python bindings" OFF)
option(ENABLE_COVERAGE "Enable coverage" OFF)
# Dependency options
set(BUILD_WITH_OPENMP CACHE STRING "Build with OpenMP" "auto")
option(BUILD_WITH_TBB "Build with TBB" ON)
option(BUILD_WITH_TBB "Build with TBB" OFF)
option(BUILD_WITH_PCL "Build with PCL (required for benchmark and test only)" OFF)
option(BUILD_WITH_FAST_GICP "Build with fast_gicp (required for benchmark and test only)" OFF)
option(BUILD_WITH_IRIDESCENCE "Build with Iridescence (required for benchmark)" OFF)
option(BUILD_WITH_MARCH_NATIVE "Build with -march=native" OFF)
option(ENABLE_COVERAGE "Enable coverage" OFF)
option(BUILD_PYTHON_BINDINGS "Build python bindings" OFF)
# Set mandatory dependencies of optional features
if(BUILD_TESTS OR BUILD_EXAMPLES OR BUILD_BENCHMARKS)
find_package(fmt REQUIRED)
set(BUILD_HELPER ON CACHE BOOL "Helper library is required" FORCE)
set(BUILD_WITH_TBB ON CACHE BOOL "TBB is required" FORCE)
endif()
if(BUILD_TESTS OR BUILD_EXAMPLES)
set(BUILD_WITH_PCL ON CACHE BOOL "PCL is required" FORCE)
endif()
# Eigen is the sole mandatory dependency
find_package(Eigen3 REQUIRED CONFIG)
@ -36,6 +49,34 @@ elseif(BUILD_WITH_OPENMP)
find_package(OpenMP REQUIRED)
endif()
if (BUILD_WITH_TBB)
find_package(TBB REQUIRED)
add_compile_definitions(BUILD_WITH_TBB)
endif()
if (BUILD_WITH_PCL)
find_package(PCL REQUIRED)
add_compile_definitions(BUILD_WITH_PCL)
if (NOT TARGET PCL::PCL)
add_library(PCL::PCL INTERFACE IMPORTED)
set_target_properties(PCL::PCL PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${PCL_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${PCL_LIBRARIES}"
)
endif()
endif()
if (BUILD_WITH_IRIDESCENCE)
find_package(Iridescence REQUIRED)
add_compile_definitions(BUILD_WITH_IRIDESCENCE)
endif()
if (BUILD_WITH_FAST_GICP)
# set(FAST_GICP_INCLUDE_DIR /home/koide/workspace/fast_gicp/include)
set(FAST_GICP_INCLUDE_DIR $ENV{FAST_GICP_INCLUDE_DIR})
add_compile_definitions(BUILD_WITH_FAST_GICP)
endif()
if(BUILD_WITH_MARCH_NATIVE)
add_compile_options(-march=native)
endif()
@ -93,32 +134,6 @@ endif()
## Benchmark ##
###############
if(BUILD_BENCHMARKS)
find_package(fmt REQUIRED)
if (BUILD_WITH_TBB)
find_package(TBB REQUIRED)
add_compile_definitions(BUILD_WITH_TBB)
endif()
if (BUILD_WITH_PCL)
find_package(PCL REQUIRED)
add_compile_definitions(BUILD_WITH_PCL)
if (NOT TARGET PCL::PCL)
add_library(PCL::PCL INTERFACE IMPORTED)
set_target_properties(PCL::PCL PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${PCL_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${PCL_LIBRARIES}"
)
endif()
endif()
if (BUILD_WITH_IRIDESCENCE)
find_package(Iridescence REQUIRED)
add_compile_definitions(BUILD_WITH_IRIDESCENCE)
endif()
if (BUILD_WITH_FAST_GICP)
# set(FAST_GICP_INCLUDE_DIR /home/koide/workspace/fast_gicp/include)
set(FAST_GICP_INCLUDE_DIR $ENV{FAST_GICP_INCLUDE_DIR})
add_compile_definitions(BUILD_WITH_FAST_GICP)
endif()
# Odometry benchmark
add_executable(odometry_benchmark
src/small_gicp/benchmark/benchmark_odom.cpp
@ -143,10 +158,10 @@ if(BUILD_BENCHMARKS)
fmt::fmt
Eigen3::Eigen
$<TARGET_NAME_IF_EXISTS:OpenMP::OpenMP_CXX>
Iridescence::Iridescence
TBB::tbb
TBB::tbbmalloc
PCL::PCL
$<TARGET_NAME_IF_EXISTS:Iridescence::Iridescence>
$<TARGET_NAME_IF_EXISTS:TBB::tbb>
$<TARGET_NAME_IF_EXISTS:TBB::tbbmalloc>
$<TARGET_NAME_IF_EXISTS:PCL::PCL>
)
# KdTree construction benchmark
@ -157,8 +172,8 @@ if(BUILD_BENCHMARKS)
fmt::fmt
Eigen3::Eigen
$<TARGET_NAME_IF_EXISTS:OpenMP::OpenMP_CXX>
TBB::tbb
TBB::tbbmalloc
$<TARGET_NAME_IF_EXISTS:TBB::tbb>
$<TARGET_NAME_IF_EXISTS:TBB::tbbmalloc>
)
if(BUILD_WITH_PCL)
@ -170,8 +185,8 @@ if(BUILD_BENCHMARKS)
fmt::fmt
Eigen3::Eigen
$<TARGET_NAME_IF_EXISTS:OpenMP::OpenMP_CXX>
TBB::tbb
TBB::tbbmalloc
$<TARGET_NAME_IF_EXISTS:TBB::tbb>
$<TARGET_NAME_IF_EXISTS:TBB::tbbmalloc>
PCL::PCL
)
endif()
@ -181,10 +196,6 @@ endif()
## Example ##
#############
if(BUILD_EXAMPLES)
find_package(fmt REQUIRED)
find_package(PCL REQUIRED)
find_package(TBB REQUIRED)
file(GLOB EXAMPLE_SOURCES "src/example/*.cpp")
foreach(EXAMPLE_SOURCE ${EXAMPLE_SOURCES})
get_filename_component(EXAMPLE_NAME ${EXAMPLE_SOURCE} NAME_WE)
@ -203,9 +214,6 @@ endif()
## Test ##
##########
if(BUILD_TESTS)
find_package(fmt REQUIRED)
find_package(PCL REQUIRED)
find_package(TBB REQUIRED)
find_package(GTest REQUIRED)
enable_testing()

View File

@ -1,30 +0,0 @@
find_path(GTSAM_INCLUDE_DIRS gtsam/inference/FactorGraph.h
HINTS /usr/local/include /usr/include
DOC "GTSAM include directories")
find_library(GTSAM_LIB NAMES gtsam
HINTS /usr/local/lib /usr/lib
DOC "GTSAM libraries")
find_library(GTSAM_UNSTABLE_LIB NAMES gtsam_unstable
HINTS /usr/local/lib /usr/lib
DOC "GTSAM_UNSTABLE libraries")
find_dependency(TBB REQUIRED)
add_library(gtsam INTERFACE IMPORTED GLOBAL)
set_target_properties(gtsam PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GTSAM_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${GTSAM_LIB} TBB::tbb TBB::tbbmalloc")
add_library(gtsam_unstable INTERFACE IMPORTED GLOBAL)
set_target_properties(gtsam_unstable PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GTSAM_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${GTSAM_UNSTABLE_LIB} gtsam")
if(GTSAM_LIB AND GTSAM_UNSTABLE_LIB AND TARGET TBB::tbb AND TARGET TBB::tbbmalloc)
set(GTSAM_LIBRARIES gtsam gtsam_unstable)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GTSAM DEFAULT_MSG GTSAM_INCLUDE_DIRS GTSAM_LIBRARIES)

View File

@ -1,32 +0,0 @@
find_path(TBB_INCLUDE_DIRS tbb/tbb.h
HINTS /usr/local/include /usr/include
DOC "oneTBB include directories")
find_library(TBB_LIB NAMES tbb
HINTS /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu
DOC "TBB libraries")
find_library(TBB_MALLOC_LIB NAMES tbbmalloc
HINTS /usr/local/lib /usr/lib
DOC "TBB malloc libraries")
if(TARGET TBB::tbb)
return()
endif()
add_library(TBB::tbb INTERFACE IMPORTED GLOBAL)
set_target_properties(TBB::tbb PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${TBB_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${TBB_LIB}")
add_library(TBB::tbbmalloc INTERFACE IMPORTED GLOBAL)
set_target_properties(TBB::tbbmalloc PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${TBB_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES "${TBB_MALLOC_LIB}")
if(TBB_LIB AND TBB_MALLOC_LIB)
set(TBB_LIBRARIES TBB::tbb TBB::tbbmalloc)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(TBB DEFAULT_MSG TBB_INCLUDE_DIRS TBB_LIBRARIES)

View File

@ -17,15 +17,12 @@ COPY . /root/small_gicp
WORKDIR /root/small_gicp/build
RUN rm -rf ./*
RUN cmake .. -DBUILD_WITH_TBB=ON
RUN cmake --build . -j$(nproc)
RUN cmake .. -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_BENCHMARKS=ON -DBUILD_WITH_TBB=ON -DBUILD_WITH_PCL=ON
RUN cmake --build . -j$(nproc)
RUN ctest -j$(nproc)
WORKDIR /root/small_gicp
RUN python3 setup.py build && python3 setup.py install
RUN pip install .
RUN pytest src/example/basic_registration.py
WORKDIR /

View File

@ -27,15 +27,12 @@ COPY . /root/small_gicp
WORKDIR /root/small_gicp/build
RUN rm -rf ./*
RUN cmake .. -DBUILD_WITH_TBB=ON
RUN cmake --build . -j$(nproc)
RUN cmake .. -DBUILD_TESTS=ON -DBUILD_EXAMPLES=ON -DBUILD_BENCHMARKS=ON -DBUILD_WITH_TBB=ON -DBUILD_WITH_PCL=ON
RUN cmake --build . -j$(nproc)
RUN ctest -j$(nproc)
WORKDIR /root/small_gicp
RUN python3 setup.py build && python3 setup.py install
RUN pip install .
RUN pytest src/example/basic_registration.py
WORKDIR /