Skip to content

Commit 01d825a

Browse files
Merge pull request #52 from julien-michot/fix/thirdparties
Fix fetching and Eigen includes
2 parents 6ddc246 + 968d5e8 commit 01d825a

File tree

3 files changed

+45
-23
lines changed

3 files changed

+45
-23
lines changed

.github/workflows/build.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,14 @@ jobs:
5151
uses: actions/checkout@v4
5252
- name: Install dependencies
5353
run: |-
54-
brew install eigen catch2
54+
brew install cmake eigen catch2
5555
- name: Configure Cmake
5656
run: |-
57-
cmake ./ -B build -DCMAKE_BUILD_TYPE=Debug -DTINYOPT_BUILD_TESTS=ON -DTINYOPT_BUILD_DOCS=OFF
57+
cmake ./ -B build -DCMAKE_BUILD_TYPE=Debug \
58+
-DTINYOPT_BUILD_TESTS=ON \
59+
-DTINYOPT_BUILD_DOCS=OFF \
60+
-DCMAKE_PREFIX_PATH=$(brew --prefix) \
61+
-DEigen3_DIR=$(brew --prefix eigen)/share/eigen3/cmake
5862
- name: Build Tinyopt
5963
working-directory: build
6064
run: |-

cmake/ThirdParties.cmake

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
21
set(THIRDPARTY_LIBS "")
32
set(THIRDPARTY_INCLUDE_DIRS "")
43

54
include(FetchContent)
65

6+
set(BUILD_TESTING_OLD ${BUILD_TESTING}) # Save your setting
7+
set(BUILD_TESTING OFF CACHE BOOL "" FORCE) # Disbale third party tests
8+
79
# For now, Eigen is mandatory
8-
find_package(Eigen3 NO_MODULE)
10+
find_package(Eigen3 QUIET)
11+
912
if (EIGEN3_FOUND)
1013
message("Eigen3 found at ${EIGEN3_INCLUDE_DIR}")
1114
else()
@@ -19,17 +22,17 @@ else()
1922
)
2023
block (SCOPE_FOR VARIABLES) # requires cmake 3.25+
2124
set(BUILD_TESTING OFF)
22-
set(EIGEN_BUILD_TESTING OFF)
23-
set(EIGEN_TEST_CXX11 OFF)
24-
set(EIGEN_HAS_CXX11_MATH ON)
25+
set(EIGEN_BUILD_TESTS OFF)
2526
set(EIGEN_BUILD_DOC OFF)
27+
set(EIGEN_BUILD_DEMOS OFF)
2628
set(EIGEN_BUILD_PKGCONFIG OFF)
29+
set(EIGEN_TEST_CXX11 OFF)
2730
FetchContent_MakeAvailable(Eigen)
2831
endblock ()
32+
set(EIGEN3_INCLUDE_DIR "${eigen3_SOURCE_DIR}" CACHE PATH "Eigen3 include directory" FORCE)
2933
endif ()
3034
add_definitions(-DHAS_EIGEN)
3135
set(THIRDPARTY_LIBS ${THIRDPARTY_LIBS} Eigen3::Eigen)
32-
set(THIRDPARTY_INCLUDE_DIRS ${THIRDPARTY_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR})
3336

3437
if (TINYOPT_USE_FMT)
3538
find_package(fmt REQUIRED)
@@ -40,21 +43,23 @@ endif ()
4043

4144

4245
if (TINYOPT_BUILD_CERES)
43-
find_package(Ceres)
46+
find_package(Ceres QUIET)
4447
if (NOT Ceres_FOUND)
4548
message("Ceres not found, fetching...")
4649
FetchContent_Declare(Ceres
4750
GIT_REPOSITORY https://github.com/ceres-solver/ceres-solver
4851
GIT_TAG 2.2.0
4952
GIT_SHALLOW TRUE
5053
GIT_PROGRESS TRUE)
51-
set(BUILD_TESTING OFF)
52-
set(BUILD_EXAMPLES OFF)
53-
set(BUILD_BENCHMARKS OFF)
54-
FetchContent_MakeAvailable(Ceres)
54+
block (SCOPE_FOR VARIABLES) # requires cmake 3.25+
55+
set(BUILD_TESTING OFF)
56+
set(BUILD_EXAMPLES OFF)
57+
set(BUILD_BENCHMARKS OFF)
58+
set(MINIGLOG ON)
59+
FetchContent_MakeAvailable(Ceres)
60+
endblock ()
5561
set(CERES_LIBRARIES Ceres::ceres)
5662
target_compile_options(ceres PUBLIC "-Wno-reorder" "-Wno-maybe-uninitialized")
57-
5863
endif ()
5964
set(THIRDPARTY_INCLUDE_DIRS ${THIRDPARTY_INCLUDE_DIRS} ${CERES_INCLUDE_DIRS})
6065
set(THIRDPARTY_LIBS ${THIRDPARTY_LIBS} ${CERES_LIBRARIES})
@@ -63,10 +68,10 @@ endif()
6368

6469

6570
if (TINYOPT_BUILD_SOPHUS_TEST)
66-
find_package(Sophus)
71+
find_package(Sophus QUIET)
6772
if (NOT Sophus_FOUND)
6873
message("Sophus not found, fetching...")
69-
set(SOPHUS_FIX_CMAKE_VER sed -i -E "s/3.24/3.2/g" CMakeLists.txt)
74+
set(SOPHUS_FIX_CMAKE_VER sed -i -E "s/3.24/3.5/g" CMakeLists.txt)
7075
FetchContent_Declare(Sophus
7176
GIT_REPOSITORY https://github.com/strasdat/Sophus.git
7277
GIT_TAG main
@@ -75,8 +80,10 @@ if (TINYOPT_BUILD_SOPHUS_TEST)
7580
PATCH_COMMAND ${SOPHUS_FIX_CMAKE_VER}
7681
UPDATE_DISCONNECTED 1
7782
)
78-
set(BUILD_SOPHUS_TESTS OFF)
79-
FetchContent_MakeAvailable(Sophus)
83+
block (SCOPE_FOR VARIABLES) # requires cmake 3.25+
84+
set(BUILD_SOPHUS_TESTS OFF)
85+
FetchContent_MakeAvailable(Sophus)
86+
endblock ()
8087
endif ()
8188
add_definitions(-DHAS_SOPHUS)
8289
#include_directories(${Sophus_SOURCE_DIR}/sophus)
@@ -87,7 +94,7 @@ endif ()
8794

8895

8996
if (TINYOPT_BUILD_LIEPLUSPLUS_TEST)
90-
find_package(LiePlusPlus)
97+
find_package(LiePlusPlus QUIET)
9198
if (NOT LiePlusPlus_FOUND)
9299
message("Lie++ not found, fetching...")
93100
FetchContent_Declare(
@@ -97,8 +104,10 @@ if (TINYOPT_BUILD_LIEPLUSPLUS_TEST)
97104
GIT_SHALLOW TRUE
98105
GIT_PROGRESS TRUE
99106
)
100-
set(LIEPLUSPLUS_TESTS OFF)
101-
FetchContent_MakeAvailable(LiePlusPlus)
107+
block (SCOPE_FOR VARIABLES) # requires cmake 3.25+
108+
set(LIEPLUSPLUS_TESTS OFF)
109+
FetchContent_MakeAvailable(LiePlusPlus)
110+
endblock ()
102111
endif ()
103112
add_definitions(-DHAS_LIEPLUSPLUS)
104113
#include_directories(${LiePlusPlus_SOURCE_DIR}/include)
@@ -108,7 +117,7 @@ endif ()
108117

109118

110119
if (TINYOPT_BUILD_TESTS OR TINYOPT_BUILD_BENCHMARKS)
111-
find_package(Catch2)
120+
find_package(Catch2 QUIET)
112121
if (NOT Catch2_FOUND)
113122
include(FetchContent)
114123
message("Catch2 is missing, fetching...")
@@ -118,13 +127,21 @@ if (TINYOPT_BUILD_TESTS OR TINYOPT_BUILD_BENCHMARKS)
118127
GIT_TAG devel
119128
GIT_SHALLOW TRUE
120129
GIT_PROGRESS TRUE
130+
OVERRIDE_FIND_PACKAGE
121131
)
122132
FetchContent_MakeAvailable(Catch2)
133+
if(NOT Catch2_VERSION)
134+
get_directory_property(Catch2_VERSION DIRECTORY "${catch2_SOURCE_DIR}" DEFINITION PROJECT_VERSION)
135+
endif()
136+
set(Catch2_FOUND TRUE)
123137
endif ()
138+
message(STATUS "Found Catch2 version: ${Catch2_VERSION}")
124139
set(THIRDPARTY_TEST_LIBS ${THIRDPARTY_LIBS} Catch2::Catch2WithMain)
125140
if (${Catch2_VERSION} GREATER_EQUAL 3.0.0)
126141
add_definitions(-DCATCH2_VERSION=3)
127142
else ()
128143
add_definitions(-DCATCH2_VERSION=2)
129144
endif ()
130-
endif()
145+
endif()
146+
147+
set(BUILD_TESTING ${BUILD_TESTING_OLD} CACHE BOOL "" FORCE) # Restore testing config

include/tinyopt/3rdparty/ceres/jet.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1502,6 +1502,7 @@ struct NumTraits<ceres::Jet<T, N>> {
15021502
return Real(std::numeric_limits<T>::epsilon());
15031503
}
15041504

1505+
static inline int digits() { return NumTraits<T>::digits(); }
15051506
static inline int digits10() { return NumTraits<T>::digits10(); }
15061507
static inline int max_digits10() { return NumTraits<T>::max_digits10(); }
15071508

0 commit comments

Comments
 (0)