CMake
- CMake : 빌드 도구 (빌드 시 : .exe, .lib, .dll 파일 생성됨)
"멀티 플랫폼을 위한 빌드 지원 시스템"
- 이 중 lib(정적 라이브러리)와 dll (동적 라이브러리)을 외부에서 사용할 수 있도록 공유
- lib : 프로그램 실행 직전에 호출됨 (컴파일 시 호출, 링크)
- dll : 프로그램 실행될 때 호출됨 (컴파일 할 때가 아닌 실제 exe 실행될 때) => 해당 프로그램(exe)와 같은 경로상에 존재해야 함
- 즉, CMake : cpp 파일들을 lib, dll로 만드는 것 (+.h)
- CMake의 목적 : 코드 은닉화 or 사용할 환경에 맞게 빌드하기
cf. 빌드 : cpp 파일 -> obj(.o) 바이너리 파일로 변환(컴파일) -> 링크 -> 실행가능한 바이너리 파일(.exe)로 만드는 과정
LIB와 DLL
- 둘 다 라이브러리!
- CMake의 결과물
두 라이브러리의 목적
1. 은닉화
cpp로 작성한 모듈을 공유하되, 내부 코드는 공개하고 싶지 않을 때
2. 코드 단순화
외부에서 가져온 라이브러리를 프로젝트에 적용 및 설정 시, 수많은 cpp 파일 대신 간단히 dll이나 lib로 추가 가능
3. 컴파일 시간 단축
미리 컴파일 되어 있기 때문에 빠른 개발 가능
LIB (정적 라이브러리)
- static link
- 컴파일 할 때 미리 호출(링크)됨
- 따라서 실행 파일(exe)의 크기가 커짐
cf. .lib
파일 : 헤더 파일들(.h
)에 선언된 함수들이 실제 구현되어 있는 라이브러리 (구현부) ==> 한 쌍!
cf. 아래의 "VS 프로젝트 속성 설정 방법" 참고!
DLL (동적 라이브러리)
- dynamic link
- 컴파일 할 때가 아닌, 실제 프로그램이 실행될 때 호출(링크)됨
- 따라서 실행 파일(exe)의 크기는 작음
- 프로그램 실행 시에만 링크되므로, 메모리를 효율적으로 쓸 수 있음
- 해당 모듈(프로그램, exe)와 같은 경로 상에만 있으면 됨
'[ 언어 및 문법 ] > 공통 개념(CS)' 카테고리의 다른 글
[CS] 헤더란 (*.h) & 다수의 파일로 관리하기 & <>, "" 차이 (0) | 2022.08.12 |
---|---|
[CS] 클래스, 생성자, 소멸자, 멤버함수 (0) | 2022.08.12 |
[CS] 빌드 과정 : 전처리 -> 컴파일 -> 링크 (+디버깅) (0) | 2022.08.12 |