본문 바로가기
지속가능티끌/Xcode. 아이폰.맥북.

Xcode . static library . 정적 라이브러리 만들기

by i.got.it 2021. 10. 22.

 

 

개요 

 

Xcode 에서  정적 라이브러리(파일 확장자 a ) 만드는 방법 정리. 

정적 라이브러리는 활용하는 응용 프로젝트 빌드시 포함되어 빌드된다.

 - 비교 : 동적 라이브러리는 프로젝트에 포함되어 빌드되지 않고  응용프로그램 실행 시점에 동적 로딩되어 실행된다.

 

본 글의 설명에 사용된 Xcode 버전 : 13 (현재 2021.10.22 최신버전임) 

 

Xcode 에서 정적 라이브러리 만들 수 있는 운영체제, 언어 

 

Xcode  는 신규 프로젝트 생성시 만들 프로그램이 실행될 기기의 운영체제 ( iOS, macOS, watchOS 등 ) 부터 지정한 이후 프로젝트 템플릿( App , Game, Framework, Library 등, 이 단계에서 정적 라이브러리 템플릿 선택가능하다) 지정한 이후 코드 작성에 사용할 언어 선택하는 식의 체계이다.  

 

정적 라이브러리 형식을 만들 수 있는 실행가능 운영체제, 사용가능 언어는 아래 표에 모두 정리.  

운영체제 실행가능기기 언어
iOS 아이폰 , 아이패드 Objective-C , Swift 
macOS 맥북 Objective-C , Swift 
C, C++ , C++ STL , Cocoa 
watchOS 애플워치 Objective-C , Swift 
tvOS 애플TV Objective-C , Swift 

.

Cocoa 는 Objective-C로 구현되어있는 Library 이며 Xcode 의 용어로는 Framework 이라 부름  

C++ STL : C++ 로 제작된 Standard Template Library  ,  Xcode 의 용어로는 Framework 에 속함.

 

개념 이해 주의 사항. 

앞의 표는 Xcode 에서 신규 프로젝트 생성시의 제한 사항일 뿐이다. 프로젝트 생성초기 iOS  , Objective-C 언어를 선택하여 정적 라이브러리를 만들었는데 이후 이 라이브러리를 macOS 에서 실행시키는 것도 필요하다면 macOS 프로젝트를 새로 만들 필요없이 프로젝트 빌드 설정에서 macOS 에서  실행가능하게 설정가능하다. 

 

 

 

 

정적 라이브러리 만들기.  운영체제 iOS  언어 Objective-C

본 예에서는 Xcode 에서 신규 프로젝트 생성시 운영체제 iOS 선택하고 Static Library 템플릿 지정, 언어는 Objective-C 로 하여 정적 라이브러리 만든 예를 보인다.

 

언어 선택은 Objective-C 를 하였지만 본 예에서의 실제 함수 코딩은 순수 C 형식으로 구현한다.   Objective-C 가 C 언어 기반한 상태에서 이것저것 추가 구현된 언어여서  순수 C 언어 형식 의 코딩도 가능함.   

 

 

단계1. 프로젝트 생성

 

Xcode  메뉴 : File -> New -> Project... 클릭하여 뜬 아래 창에서, iOS 선택, Static Library 선택 한다. 

이후 단계에서 언어선택을 Objective-C 선택. (Swift, Objective-C  중 하나 선택 가능함.) 

초기 생성시 ios 를 지정했었음을 표시해둘려고 프로젝트 이름은 sl_ios 로 했음. 

 

이후 Next 클릭하여 프로젝트 저장할 폴더 선택한 이후 최종 자동 생성된 2개의 파일이 보인다. 심플하니 좋다. 

 

헤더파일. 

 

 

m파일. (Objective-C 는 확장자가 c 아닌 m임)

 

 

빌드 형식  Release / Debug 모드 선택

아래그림. 툴바의 프로젝트명을 클릭하여 보이는 메뉴 중 Edit Scheme.. 클릭   

위 그림에서 Edit Scheme.. 클릭  하여 뜬 창에서 Run -> Build Configuration 에서 Release , Debug 중 1개 선택한다. 본 예에서는 Release 선택. 

 

개발이 완료되어 최종 배포될때는 Release 모드로 빌드된것을 배포해야함. 

 

 

 

 

단계 2. 시험 빌드 해보기 

- 초기 생성된 프로젝트 에 코드 작성 하지 않은 상태에서 먼저 빌드해보자 . 최종적으로 확장자 .a  인 파일이 만들어져야 하며 , 어떤 경로에 만들어지는지 확인할 목적이다. 

 

빌드 방법. 

Xcode 메뉴 : Product -> Build 클릭한다. 

 

빌드된 파일 있는 폴더 열기. 

Xcode 메뉴 : Product -> Show Build Folder in Finder  클릭하면 빌드된 파일이 있는 폴더를 Finder 에서 열어준다. 

아래 그림과 같다. 

가장 오른쪽에 보이는 libsl_ios.a 가 최종 정적 라이브러리 결과물이다. 

 

 

 

단계 3. 함수 추가  

이제 정적 라이브러리에서 외부에 제공할 함수 코딩 해보자. 예로 사용되는 함수의 기능은 함수 인자로 전달된 숫자를 그대로 리턴하는 단순 룹백 기능의 간단한 함수명 loopback 으로 하여 구현한다.  

 

헤더파일에 함수 선언하고 , 소스파일(확장자 m ) 에 함수 정의한다. 아래 코드는 Xcode 에서 자동 생성한 Objective-C 구문은 모두 주석처리하고, 순수 C 언어 형식으로 함수 선언하고 정의한 것이다. Objective-C 는 C 언어 코드 다 정상 작동함.  

 

// 헤더  파일에  함수  선언  


// Objective-C 사용하지 않음. #import <Foundation/Foundation.h>
#include "stdint.h" // uint8_t , uint32_t 등의 표준 정수 자료형  이용하기 위함.

int8_t loopback(int8_t i8); // 함수선언 

/* Objective-C 사용하지 않음
@interface sl_ios : NSObject
@end
*/

// 소스 파일에 함수 정의
#import "sl_ios.h"

// 함수정의.
int8_t loopback(int8_t i8)
{
    return i8;
}

/* Objective-C 사용하지 않음
@implementation sl_ios
@end
*/

상기코드에서 int8_t 등과 같은 표준 정수자료형 상세 정보

 

 

 

단계 4. 빌드 셋팅하고 빌드하기. 

 

처리1 . Build Settings 에서 Base SDK 지정하기.

 

이제 만든 코드를 빌드해야 하는데 본 코드예 와 같이 플랫폼 의존성 없을 정도의 원초적인 C언어 코드라고  해도 Xcode 체계에서는 반드시 현재 빌드된 것이  실행가능한 운영체제 1개만 지정해야 하며, 지정하는 곳은 아래 그림과 같이 프로젝트의 Build Setting의 Base SDK 설정부분에서 1개 선택한다. 

 

 

이 설정에서, macOS 를 선택하여 빌드된 라이브러리는 iOS 에서는 실행불가하며, 라이브러리 도입하여 활용하는응용 프로그램도 macOS 에서 실행가능한 것이어야 한다. 

 

반대로 iOS 를 선택하여 빌드된 라이브러리는 macOS 는 실행불가하며, 응용 프로그램도 iOS 에서 실행가능한 것이어야 한다. 

 

 

본 글의 예에서는 macOS 를 선택하여 빌드한 예를 보인다. iOS 에서  실행가능한 것을 빌드하려면 iOS 를 선택하면 됨. 

 

 

처리2.  Build 타겟 세부 설정 .  예 : Any Mac 지정. 

 

아래 그림 처럼 툴바에 보이는 프로젝트 이름 클릭하여 보이는 메뉴에서 Build 하위  Any Mac (Apple Silicon, Intel) 을 지정한다.   Mac 의 CPU가 Apple 자체 CPU (아키텍처 arm64) 인것과 인텔 CPU (아키텍처 x86_64 ) 2개 모두에서 실행가능한 것을 만든다는 의미임. 

 

( 참고 : 만들어진 라이브러리 의 실행가능 아키텍처 확인하는 방법 으로 확인해보면 arm64 와 x86_64 2개 모두 지원하는것을 보여준다.   ) 

 

 

 

 

처리3. Build 실행. 

빌드 방법. 

Xcode 메뉴 : Product -> Build 클릭한다. 

 

빌드된 파일 있는 폴더 열기. 

Xcode 메뉴 : Product -> Show Build Folder in Finder  클릭하면 빌드된 파일이 있는 폴더를 Finder 에서 열어준다. 

아래 그림과 같다.  2개의 파일 libsl_ios.a 와 sl_ios.h 가 최종 만들어진 정적 라이브러리 결과물이며, 응용 프로젝트에서 이 2개의 파일을 가져가서 활용하면 된다.  

 

 

 

 

 

개발 중 프로젝트에서 라이브러리 활용하기 위한 방법은 아래 포스트에 별도 정리. 

 

 

Xcode . static library . 정적 라이브러리 활용 방법

개요 Xcode 의 본인 프로젝트에서 정적 라이브러리(파일 확장자 a ) 활용하는 방법 정리. 정적 라이브러리는 프로젝트 빌드시 포함되어 빌드된다.  - 비교 : 동적 라이브러리는 프로젝트에 포함되

igotit.tistory.com

 

 

 

 

 

 

 

연관

 

 

Xcode . 개요 . 설치

Xcode - 애플사의 기기에서 실행되는 앱 통합 개발 SW 툴. 무료.  - 앱 실행 기기 : Mac, iPhone, iPad, Apple Watch, Apple TV - Xcode 실행 가능기기 : 운영체제 macOS 인 기기 . 예 : 맥북 - 지원 언어 : C,..

igotit.tistory.com

 

 

 

 

 


첫 등록 : 2021.10.22

최종 수정 : 

단축 주소 : https://igotit.tistory.com/2969


 

 

 

 

 

댓글



 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5