diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9cea67a2..9a347527 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -19,19 +19,26 @@ jobs: fail-fast: false matrix: os: [ubuntu-24.04, ubuntu-22.04] + include: + - os: ubuntu-22.04 + extra_deps: "libunwind-dev libceres-dev" + extra_cmake_def: "" + - os: ubuntu-24.04 + extra_deps: "libg2o-dev libceres-dev" + extra_cmake_def: "-DWITH_CERES=ON" steps: - name: Install dependencies run: | DEBIAN_FRONTEND=noninteractive sudo apt-get update - sudo apt-get -y install libopencv-dev libpcl-dev git cmake software-properties-common libyaml-cpp-dev + sudo apt-get -y install libopencv-dev libpcl-dev git cmake software-properties-common libyaml-cpp-dev ${{ matrix.extra_deps }} - uses: actions/checkout@v4 - name: Configure CMake run: | - cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{ matrix.extra_cmake_def }} - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} diff --git a/CMakeLists.txt b/CMakeLists.txt index a8fb50b3..c7ffc04a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -501,21 +501,30 @@ IF(WITH_G2O) get_target_property(G2O_INCLUDES g2o::core INTERFACE_INCLUDE_DIRECTORIES) MESSAGE(STATUS "g2o include dir: ${G2O_INCLUDES}") FIND_FILE(G2O_FACTORY_FILE g2o/core/factory.h - PATHS ${G2O_INCLUDES} - NO_DEFAULT_PATH) - FILE(READ ${G2O_FACTORY_FILE} TMPTXT) - STRING(FIND "${TMPTXT}" "shared_ptr" matchres) - IF(${matchres} EQUAL -1) - MESSAGE(STATUS "Old g2o factory version detected without shared ptr (factory file: ${G2O_FACTORY_FILE}).") - SET(G2O_CPP11 2) - ELSE() - MESSAGE(STATUS "Latest g2o factory version detected with shared ptr (factory file: ${G2O_FACTORY_FILE}).") - SET(G2O_CPP11 1) - ENDIF() + PATHS ${G2O_INCLUDES} + NO_DEFAULT_PATH) + FILE(READ ${G2O_FACTORY_FILE} TMPTXT) + STRING(FIND "${TMPTXT}" "shared_ptr" matchres) + IF(${matchres} EQUAL -1) + MESSAGE(STATUS "Old g2o factory version detected without shared ptr (factory file: ${G2O_FACTORY_FILE}).") + SET(G2O_CPP11 2) + ELSE() + MESSAGE(STATUS "Latest g2o factory version detected with shared ptr (factory file: ${G2O_FACTORY_FILE}).") + SET(G2O_CPP11 1) + ENDIF() ELSE() FIND_PACKAGE(G2O QUIET) IF(G2O_FOUND) MESSAGE(STATUS "Found g2o: ${G2O_INCLUDE_DIRS}") + FIND_FILE(G2O_FACTORY_FILE g2o/core/factory.h + PATHS ${G2O_INCLUDES} + NO_DEFAULT_PATH) + FILE(READ ${G2O_FACTORY_FILE} TMPTXT) + STRING(FIND "${TMPTXT}" "shared_ptr" matchres) + IF(NOT ${matchres} EQUAL -1) + MESSAGE(STATUS "Latest g2o factory version detected with shared ptr (factory file: ${G2O_FACTORY_FILE}).") + SET(G2O_CPP11 1) + ENDIF() ENDIF(G2O_FOUND) ENDIF() ENDIF(WITH_G2O)