6

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. I've been having trouble installing it. When I ran cmake '/home/brentonhorne/eigen-eigen-5097c01bcdc4 where /home/brentonhorne/eigen-eigen-5097c01bcdc4 is the location of the source directory extracted from the tarball I downloaded from the Eigen website, I received the error:

CMake Error at CMakeLists.txt:8 (message):
In-source builds not allowed.  Please make a new directory (called a build
directory) and run CMake from there.  You may need to remove
CMakeCache.txt.


-- Configuring incomplete, errors occurred!

Please tell me how to get past this roadblock. I do not understand much programming but if you can explain to me what I need to do in terms of what to paste into terminal I can do it! If it is needed to help me I am running 12.10.

If you need to know the contents of the INSTALL file in the source directory here they are:

Installation instructions for Eigen
***********************************

Explanation before starting
***************************

Eigen consists only of header files, hence there is nothing to compile
before you can use it. Moreover, these header files do not depend on your
platform, they are the same for everybody.

Method 1. Installing without using CMake
****************************************

You can use right away the headers in the Eigen/ subdirectory. In order
to install, just copy this Eigen/ subdirectory to your favorite location.
If you also want the unsupported features, copy the unsupported/
subdirectory too.

Method 2. Installing using CMake
********************************

Let's call this directory 'source_dir' (where this INSTALL file is).
Before starting, create another directory which we will call 'build_dir'.

Do:

  cd build_dir
  cmake source_dir
  make install

The "make install" step may require administrator privileges.

You can adjust the installation destination (the "prefix")
by passing the -DCMAKE_INSTALL_PREFIX=myprefix option to cmake, as is
explained in the message that cmake prints at the end.
0

3 Answers 3

8

I'm not familiar with Eigen, but from the error message, it looks like it requires an "out of source" build.

This means that if you have downloaded and extracted Eigen to /home/brentonhorne/eigen-eigen-5097c01bcdc4, then you should create a new directory outside of the Eigen root altogether, e.g. /home/brentonhorne/build_eigen and run CMake from there. I guess something like:

mkdir /home/brentonhorne/build_eigen
cd /home/brentonhorne/build_eigen
cmake /home/brentonhorne/eigen-eigen-5097c01bcdc4
make
sudo make install
2
  • I received the same error again after the cmake line... CMake Error at CMakeLists.txt:8 (message): In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt. -- Configuring incomplete, errors occurred!
    – Josh Pinto
    Jan 31, 2013 at 21:57
  • There may be a file in your Eigen source directory called "CMakeCache.txt". This is a file which CMake generates when run, and which caches a load of variables to save it looking for the same set of things on every run. If you tried running CMake in your Eigen source once, it could have left behind this CMakeCache.txt file. No matter where you subsequently run CMake from, the cache file will make it appear as if you're running from the Eigen source. So you need to delete this file if it exists. If this still doesn't work, the last option is to do a fresh checkout and try from scratch.
    – Fraser
    Jan 31, 2013 at 22:54
7

It should be noted that Eigen library can be installed as a package. sudo apt-get install libeigen3-dev for the most recent library and sudo apt-get install libeigen2-dev for the one mentioned in this question.

1
  • This worked for me in Ubuntu 64-bit 16.04.1.
    – gbmhunter
    Jan 17, 2017 at 11:03
1

Well, I installed it myself and it's working perfectly. Here is what I did (which is same as what I posted before):

  • Download Eigen 3.1.2 from http://eigen.tuxfamily.org/index.php?title=Main_Page.
  • Open a terminal (Ctrl+Alt+T) and run:
cd ~/Downloads
tar xzf eigen-eigen-5097c01bcdc4.tar.bz2
cd eigen-eigen-5097c01bcdc4
sudo cp -r Eigen /usr/include/
  • Done!
  • Copy the Eigen directory to /usr/include.

You'd neet root user privileges to do that. So, open a terminal, browse to the directory containing the Eigen directory, and run sudo cp -r Eigen /usr/include/.

  • To include a header file, say Dense, from the Eigen directory use
#include <Eigen/Dense>
1
  • You don't have to do anything fancy. Just copy the directory as I've written in the updated answer.
    – green
    Feb 1, 2013 at 8:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .