C , C++, C#

[Cmake] 헤더 파일 Include 포함시키기

vhxpffltm 2022. 3. 8. 22:21

Cmake를 작성하여 간단한 프로그램을 짜면

 

보통 아래와 같이 사용할 수 있다. 

 

간단하니 헤더파일 / 소스파일 / cmake 파일이 같은 경로에 있다고 보자.

 

 

 

이 간단한 것을 Visual Studio Code로 보면 아래와 같다.

 

 

이렇게 경로가 단순하게 되어 있다면 위처럼 Executabble에 간단히 헤더 파일과 소스파일을 적어서 빌드하면 된다.

 

그런데 헤더 파일이 많아지고 소스파일 코드에 include 경로가 복잡해지면 문제이다....

 

include에 헤더파일의 경로를 입력하는데 분명 어려움이 있을것이고 이로 인해 

Undefined Reference.... 라고 하면서 파일이나 경로를 찾을 수 없다고 하는 순간 문제다.

 

물론 그럴거면 절대경로 다써서 하면 되겠지만.. 그건 좀 아니다.

 

그럴때 cmake의 include_directories()나 target_include_directories()를 사용하면 된다.

 

보면 알겠지만 include_directories(디렉토리)는 각 소스파일에서 디렉토리 내의 헤더파일을 찾고 target_include_directories()는 Target에 포함된 소스 파일에서 헤더파일을 찾는다.

 

아래는 필자가 사용한 target_include_directories 예시이다.

 

 

보면 알겠지만 내 시작 소스 디렉토리/include 디렉토리에서 헤더파일을 찾을 것이고

 

해당 디렉토리의 소스 파일들을 include "헤더파일" 시 전체 경로를 사용하지 않아도 된다.

 

시작 경로는 [시작 디렉토라]/include 가 이미 정해져있다.

 

 

https://stackoverflow.com/questions/13703647/how-to-properly-add-include-directories-with-cmake 

 

How to properly add include directories with CMake

About a year ago I asked about header dependencies in CMake. I realized recently that the issue seemed to be that CMake considered those header files to be external to the project. At least, when

stackoverflow.com