문제
- C++ 코드에서 Eigen을 include 할 때, 헤더 파일을 찾을 수 없다는 에러가 발생하는 경우가 있다.
// 문제 발생 코드 예시
#include <Eigen/Eigen>
// 에러
// Eigen/Eigen: No such file or directory
원인
- Ubuntu 환경에서 apt를 이용하여 Eigen 라이브러리를 설치하면 기본적으로 `/usr/include/eigen3`에 설치된다.
sudo apt install -y libeigen3-dev
- 따라서 Eigen을 include 하기 위한 올바른 방법은
#include <eigen3/Eigen/Eigen>
- 하지만 이렇게 긴 경로는 그 자체로 번거로울 뿐 아니라, 많은 오픈소스 코드들이 eigen3을 포함하지 않고 `#include <Eigen/Eigen>` 형태를 사용하고 있기 때문에 빌드 과정에서 문제를 일으키곤 한다
해결방법
1. symbolic link 생성
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
- 한 번 심볼릭 링크를 생성해 두면 시스템 전반에서 별도의 추가 설정 없이 Eigen을 간단하게 사용할 수 있다
- ln 명령어에 익숙하지 않은 이상 여러 버전의 Eigen을 사용할 때 충돌 문제가 있을 듯하다
2. CMake 설정
# 프로젝트의 CMakeLists.txt에서
find_package(Eigen3 REQUIRED)
include_directories(${EIGEN3_INCLUDE_DIR})
- CMake에서 설정을 해두면 다른 사람들의 세팅환경에 무관하게 빌드과정에서 include 문제가 발생하지 않을 것이다
- 프로젝트마다 다양한 버전의 Eigen을 사용하는 경우, 아래와 같이 특정 버전을 명시할 수 있어 용이하다
find_package(Eigen3 3.3 REQUIRED)
'Ubuntu' 카테고리의 다른 글
듀얼부팅 환경에서 Ubuntu와 Window 시간 동기화 (0) | 2024.09.19 |
---|---|
Ubuntu에 폰트 추가하는 방법 (3) | 2024.09.17 |
Ubuntu 20.04에서 Ctrl+Shift+E가 안되는 문제 (0) | 2024.09.16 |
Ubuntu apt 명령어 속도 향상: 미러서버 변경 (0) | 2024.09.15 |