Framework vs Library
Framework vs Library
종류: Develop
개요
- c++ 라이브러리인 .a파일과 .h파일, 그리고 c++파일을 하나의 모듈로 만들어야 하는데 어떻게 해야할까?에서 시작한 것!
Library
Library는 타겟(앱)에서 사용될 코드와 데이터들의 모임이다. 이후에 컴파일 시점 또는 런타임 시점에 타겟(앱)에 연결(링킹)되어 사용된다. 단, 이미지와 같은 리소스들은 포함할 수 없다.
Library 은 타겟에 어떻게 링킹하는가에 따라 2 타입으로 나누어 볼수 있다.
- Static Library (
.a
) - Dynamic Library (
.dylib
)
Static Library
- Static Library 은 object file 의 묶음이다.
.a
파일 익스텐션을 가지고 있음
Dynamic Library
- 컴파일 시점에 executable file에 복사되지 않고 필요한 시점에 동적으로 로드
Framework
- 계층구조를 갖는 디렉토리
- dynamic library, header file, resource 등을 가지고 있음
Q.Module이 Static인지 Dynamic인지 어떻게 선택할까?
- build setting에서 Mach-O Type 필드로 수정 가능
- framework의 경우 dyanmic library를 포함하므로, dynamic으로 선택되지만 static으로 변경 가능
- 단, framework 번들에는 접근할 수 없으며 framework내의 리소스도 사용할 수 없다.
Q. Embed or Not Embed의 차이점
- Embedding module은 해당 모듈을 최종 package에 폴더로서 추가한다. 이 폴더를 bundle class를 이용해서 런타임에 접근하여 리소스를 사용할 수 있다. 해당 폴더를 실제로 보려면 프레임워크를 포함하고, 아카이브하면 된다. static library의 경우, 포함하지 않아도 된다. 컴파일타임에 컴파일되고, 링킹되기 때문이다.
XCFrameworks
- xcode 11부터 가능해진 새로운 framework 배포 방법
- swift와 c 코드 지원 가능