2014-11-11 3 views
0

저는 인터넷에서 다운로드 한 C 프로젝트를 만들고 있습니다. Eigen이 선형 대수학에 사용되는 몇 가지 함수를 추가하려고합니다. 이를 위해 Eigen이 의존하는 파일을 CMake에 포함시키는 방법은 무엇입니까?

, 나는 CMakeLists.txt에 다음 줄을 추가 :

PKG_CHECK_MODULES(EIGEN3 REQUIRED eigen3) 
INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIRS}) 
LINK_DIRECTORIES(${EIGEN3_LIBRARY_DIRS}) 
ADD_EXECUTABLE(main main.c) 
TARGET_LINK_LIBRARIES(main ${EIGEN3_LIBRARIES}) 

및 cmake를 실행할 때 나는 오류를 얻을 수 없습니다. 다음 나는 C 함수 중 하나에 <Eigen/Dense>을 포함 할 때 문제가

을, 나는 다음과 같은 오류를 걸하려고하면

/usr/include/eigen3/Eigen/Core:28:19: fatal error: complex: No such file or directory #include <complex> 

Eigen/DenseEigen/Core 포함 Eigen/Core<complex> I을 포함 올바른 디렉토리를 찾지 못했다고 생각하면 complex ... 어떻게 보이게할까요?

+0

CMake에서 Eigen을 검색하는 방법을 배우려면 [내 대답] (http://stackoverflow.com/questions/12249140/find-package-eigen3-for-cmake/12258855#12258855)을 확인하십시오. (하지만 @ jet47은 C가 아닌 C++ 프로젝트입니다.) –

+0

조언 해 주셔서 감사합니다 :) 다른 게시물에서 언급 한 내용을 시도했지만 문제가 해결되지 않았습니다. Eigen의 인클루드 디렉토리는 이미 존재하며'cmake .'는 어떤 에러도 반환하지 않는다고 언급 했었습니다. 빠진 것은'/ usr/include/C++/4.8 /'과 같은 C++ 표준 라이브러리를 포함하지만 프로젝트가 C 프로젝트이므로 @ jet47이 가리키는 것과 같이 자동으로 포함되지 않습니다. 수동으로 추가해야합니까, 아니면이 C 프로젝트에서 Eigen을 사용하려면 어떻게해야합니까? – Beginner

답변

1

C++ 라이브러리의 고유 한 반면 응용 프로그램 소스는 C 파일 (main.c)입니다. .c 확장자를 가지고 있기 때문에, CMake는 그것을 C 소스로 위협하고 C++ 표준 라이브러리 (<complex>)에 대해 알지 못하는 C 컴파일러를 사용합니다. main.cmain.cpp으로 바꿉니다.

+0

오, 이제 알겠습니다! 답장을 보내 주셔서 감사합니다. 전체 프로젝트가 C++이 아닌 C로 작성 되었기 때문에 상황을 설명 할 때주의하지 않았습니다. main.c를 main.cpp로 바꾸는 것이 올바른 방법이 아닌 것 같습니다 ... Cigen 프로젝트에서 Eigen을 사용할 수 있는지 알고 있습니까? 그렇다면 포함 문제를 해결하는 방법은 무엇입니까? – Beginner

+1

제가 아는 한 Eigen은 C++ 라이브러리이며 C 프로젝트에서는 사용할 수 없습니다. 그러나 Eigen을 사용하는 모든 코드를 파일을 분리하여 C++로 컴파일하고 프로젝트의 나머지 부분을 C로 남겨 둘 수 있습니다. – jet47

+0

정확하게 Eigen을 고수하기로 결정한 경우 정확하게 수행해야한다고 생각합니다. 많은 감사 :) – Beginner

관련 문제