지정된 [소스파일]을 사용하여 프로젝트에 실행 파일을 [이름]으로 생성함
지정된 [소스파일]을 사용하여 프로젝트에 [이름]으로 라이브러리를 추가함
현 위치 기준, 빌드에 사용되는 (상대경로일 경우 하위) [소스디렉토리]를 추가함
패키지(일반적으로 프로젝트 외부에서 제공됨, ex. openCV)를 찾고 해당 패키지 별 세부 정보를 로드함
REQUIRED는 여러 옵션 중 하나로, 패키지를 못찾았을 경우 에러를 발생시킴
지정된 [타겟]을 컴파일 할 때, 사용할 [Include 디렉토리]를 지정함
[타겟]은 add_library() 혹은 add_excutable()로 선언된 [이름]을 사용해야 함
PUBLIC은 여러 옵션 중 하나로, PUBLIC, PRIVATE, INTERFACE 를 골라 사용함
지정된 [타겟] 혹은 해당 종속 항목을 연결할 때, 사용할 라이브러리 또는 플래그를 지정함
[타겟]은 add_library() 혹은 add_excutable()로 선언된 [이름]을 사용해야 함
PUBLIC은 여러 옵션 중 하나로, PUBLIC, PRIVATE, INTERFACE 를 골라 사용함
지정된 [타겟]을 연결할 때 링커가 라이브러리를 검색해야 하는 경로를 지정함 (사용 권장하지 않음)
[타겟]은 add_library() 혹은 add_excutable()로 선언된 [이름]을 사용해야 함
PUBLIC은 여러 옵션 중 하나로, PUBLIC, PRIVATE, INTERFACE 를 골라 사용함
CMakeLists를 작성할 때, print 해서 결과를 확인하려고 할 때 유용한 함수
지정된 [메세지 텍스트]를 [모드]에 따라 로그로 남김, 여기서는 "STATUS"를 [모드]로 선택
target
: cmake로 빌드해야 하는 executable 혹은 library를 의미
library A
를 생성하면, API(header/include files
)와 컴파일 된 코드(.lib
)가 제공됨
Project B
에서 library A
를 사용하기 위해, header file
을 include 해야 함, 그 후에 Project B
를 컴파일 할 수 있게 됨
또한, Project B
의 바이너리를 만들려면 컴파일 된 A
를 링크를 하는 작업이 필요함
target_include_directories
는 B의 cmake가 어디에서 (A 포함) API header를 찾아야 하는 지 명시해줌
target_link_directories
와 target_link_libraries
는 같은 역할을 하는데, 단지 input이 lib directory냐 lib 그 자체냐의 문제로 다르며, 이들은 cmake가 A의 컴파일된 코드
를 어디서 가져와야 하는 지에 대해 알려주는 역할을 함
만약 library가 header-only
이면 link는 사용할 필요가 없음