(App.2) Eigen 설치

Mark Lee·2022년 3월 10일
0

Numerical Optimization

목록 보기
6/7

Optimization코딩을 위해서는 Linear Algebra용도의 라이브러리가 반드시 필요합니다.
직접 짤 수도 있겠지만, 여기서 설치할 Eigen의 경우는 제공되는 기능이나, 성능적으로 충분히 최적화되고 안정화된 라이브러리이기 때문에 Eigen 사용을 권합니다.

설치

아래 설치 과정은 window 환경에서, visual studio 2019 기반입니다.

1. 다운로드

먼저 아래 홈페이지에서 Eigen을 다운로드합니다.
저는 3.4.0버전을 다운로드했습니다.

https://eigen.tuxfamily.org/index.php?title=Main_Page

그리고 추가적으로 CMake 도 아래 홈페이지에서 다운로드합니다.
https://cmake.org/download/

2. Eigen 빌드

다운로드한 Eigen압축파일을 적당한 곳에 풀어줍니다.
저는 아래 위치에 풀었습니다.
D:\Source\library\eigen-3.4.0

CMake를 실행하여 Where is the source code, Where to build the binaries를 지정하고 Configure버튼을 누르고 뜨는 창에서 아래와 같이 설정했습니다.
제 개발환경에 맞춘 예시입니다.

Finish버튼을 누르면 Configure가 실행이 됩니다.

완료 이후에 CMAKE_INSTALL_PREFIX 경로또한 적당히 지정합니다. 빌드된 라이브러리가 CMAKE_INSTALL_PREFIX에 설치가 됩니다.

다시 ConfigureGenerate버튼을 차례로 누르면 Visual Studio용 솔루션이 Where to build the binaries에서 지정한 경로에 만들어 집니다.

간단히 Open Project를 눌러 솔루션을 열어보면, 시작 프로젝트가 ALL_BUILD로 되어 있는 것을 볼 수 있습니다. 빌드를 한 이후에, 바로 INSTALL프로젝트만 다시 빌드하면 CMAKE_INSTALL_PREFIX에 사용 가능한 라이브러리가 설치됩니다.

3. Eigen 프로젝트 생성

2번 단계에서 INSTALL된 폴더에 가보면 include 폴더가 있습니다.
Visual Studio 에서 프로젝트 속성에 이 include를 포함해주면 바로 사용이 가능합니다만
위에서 CMake를 사용한 김에 CMake를 이용해서 자동으로 Eigen이 include된 프로젝트를 생성해 보겠습니다.

먼저 아래와 같이 cpp파일을 하나 만듭니다.

int main()
{
	return 0;
}

그리고 cpp파일이 있는 위치에 CMakeLists.txt 파일을 하나 만든 다음 아래와 같이 내용을 적습니다.

첫 줄은 최소 CMake버전이며, 두번째 줄을 만들어질 프로젝트의 명칭입니다.

find_package는 Eigen을 링크하기 위한 용도이며,
바로 아래에 file(GLOB SOURCE_FILES *.cpp *.h)CMakeLists.txt가 위치한 폴더의 모든 cpp파일 h파일을 새로 만들어질 프로젝트에 추가하겠다는 의미입니다.

cmake_minimum_required (VERSION 3.0)
project (Optimization)
 
find_package (Eigen3 3.4 REQUIRED NO_MODULE)
 
file(GLOB SOURCE_FILES *.cpp *.h)

add_executable(Optimization ${SOURCE_FILES})
target_link_libraries (Optimization Eigen3::Eigen)

그리고 다시 Cmake를 실행해서
아래의 Eigen3_DIR은 2번 단계에서 install폴더 하위 폴더를 지정해줍니다.
D:\Source\library\eigen-3.4.0\shared\share\eigen3\cmake
(정확하게는 Eigen3.Config.cmake 파일이 있는 위치입니다)

ConfigureGenerate버튼으로 프로젝트를 만들어서, Open Project를 하면 다음과 같이
프로젝트가 만들어진것을 볼 수 있습니다.

아래와 같이 Eigen Include폴더가 추가된 것을 확인할 수 있습니다.

이제 test.cpp파일 내용을 아래와 같이 작성해봅니다.
상단에 #include <Eigen/Core>가 Eigen을 사용하기 위한 기본 헤더입니다.

#include <Eigen/Core>
#include <iostream>

int main()
{
	Eigen::MatrixXd a, b;

	a.resize(3, 3);
	a.setOnes();

	b.resize(3, 1);
	b.setOnes();

	Eigen::MatrixXd c;
	c = a * b;

	std::cout << c;

	return 0;
}

실행하면 다음과 같이 행렬 계산이 된 것을 볼 수 있습니다.

아래의 Numerical Optimization용 예제 코드도
위와 같이 프로젝트를 생성해서 빌드하시면 됩니다.

https://github.com/YongheeLee/NumericalOptimization

profile
C++/C#, Python을 주로 사용하는 개발자입니다. Engineering 알고리즘 개발을 주 업무로 하고 있습니다.

0개의 댓글