← All tasks
cppceres-solver/ceres-solver #539Reported task

How to build ceres master with user's eigen?

envgap__ceres-solver__ceres-solver-539

01 / FAILURE SIGNATURE

Captured in a clean container

Could not find a configuration file for package "Eigen3" that is compatible

02 / ENVIRONMENT RECIPE

Base commit
a60136b7aa2c1ab97558a74b271eee16ca1365c4
Manifest
CMakeLists.txt
Reproduce
cmake --build build --target helloworld -j2 && ./build/bin/helloworld
Run under trace
./build/bin/helloworld
Reference environment fix used for admission
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+set -euo pipefail
+git clone --depth 1 --branch 3.3.7 https://gitlab.com/libeigen/eigen.git /tmp/envgap-eigen-fixed
+test "$(git -C /tmp/envgap-eigen-fixed rev-parse HEAD)" = 21ae2afd4edaa1b69782c67a54182d34efe43f9c
+cmake -S /tmp/envgap-eigen-fixed -B /tmp/envgap-eigen-fixed/build -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTING=OFF
+cmake --install /tmp/envgap-eigen-fixed/build

03 / ORIGINAL ISSUE TEXT

ceres-solver/ceres-solver #539 · read the original issue
Hi, My OS is ubuntu16.04,  with `sudo apt install libeigen3-dev` installed is 3.2.92, which can be see by ` pkg-config --modversion eigen3`, but the ceres master need eigen >=3.3.  I download eigen 3.3.7 into`/home/jxl/third_softwares/eigen_3_3_7`. With cmake gui, set  `Eigen3_DIR = /home/jxl/third_softwares/eigen_3_3_7/`,  configure failed.  Set by command line also failed!

>  

      jxl@dell:~/third_softwares/ceres-solver/build_dir$ cmake .. -DLAPACK=ON -DSUITESPARSE=ON -DCXSPARSE=ON -DEIGENSPARSE=ON -DGFLAGS=ON -DMINIGLOG=OFF -DSCHUR_SPECIALIZATIONS=ON  -DCERES_THREADING_MODEL=CXX11_THREADS  -DCXX11=ON -DBUILD_SHARED_LIBS=OFF -DEXPORT_BUILD_DIR=OFF -DBUILD_DOCUMENTATION=OFF -DLIB_SUFFIX=64 -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=OFF​ -DEigen3_DIR=/home/jxl/third_softwares/eigen_3_3_7/



The output is:

>

  -- Detected Ceres version: 2.0.0 from /home/jxl/third_softwares/ceres-solver/include/ceres/version.h

	-- Detected available Ceres threading models: [CXX11_THREADS, OPENMP, NO_THREADS]

	-- Building with C++11

	CMake Error at CMakeLists.txt:243 (find_package):

	  Could not find a configuration file for package "Eigen3" that is compatible

	  with requested version "3.3".



	  The following configuration files were considered but not accepted:



	    /usr/lib/cmake/eigen3/Eigen3Config.cmake, version: unknown







	-- Configuring incomplete, errors occurred!

	See also "/home/jxl/third_softwares/ceres-solver/build_dir/CMakeFiles/CMakeOutput.log".



So how to build ceres master with user's eigen?  or how to upgrade `/usr/include/eigen3` into 3.3?

Thanks very much, appreciate for your help a lot !

Continue on GitHub ↗

04 / LABELS

Labels checked by running the task · assistant reviewed

underspecification
Label rules and the text that matched
[
  {
    "category": "underspecification",
    "rule": "signature.missing_system_requirement",
    "source": "failure_signature",
    "excerpt": "Could not find a configuration file for package \"Eigen3\" that is compatible"
  },
  {
    "category": "underspecification",
    "rule": "diff.adds_external_environment_requirement",
    "source": "manifest_diff:setup.sh",
    "excerpt": "cmake --install /tmp/envgap-eigen-fixed/build"
  }
]

Historical install-only results are not EnvGap validation.

The original dependency context uses upstream Eigen3.3-beta1, which declares version3.2.92 matching the reported Ubuntu package. Both dependency releases predate the issue; exact Git SHAs are asserted.

The upstream3.2.92 installation supplies Eigen3Config.cmake with unknown version, reproducing the reported rejection of that config by Ceres find_package(Eigen3 3.3).

Optional SuiteSparse/CXSparse/LAPACK and tests are disabled to isolate Eigen discovery; the unchanged upstream helloworld solver executes with Eigen.

Auxiliary Eigen Git tag resolutions are retained in build logs; registry date enforcement does not cover Git downloads.

Preparation uses current registries. Historical package availability is not enforced here; execution metadata records this limitation separately from the oracle's date-bounding policy.