2019년 9월 10일 화요일

Xcode에서 filament sample 소스 실행

filament 전체 소스를 받으면 platform별 sample 소스가 있음.
iOS의 경우 filament-master/ios/samples아래에 여러 소스가 있음.

## 빌드
Xcode에서 빌드를 하면 Project->Build Phases->Build Materials의 shell 스크립트의 경로 설정 부분이 달라서 오류가 발생. filament 소스 받아서 맨 상위에 있는 build.sh 실행하면 binaries가 생성됨.
> ./build.sh debug release
# 위 명령어는 디버그, 릴리즈 모드 둘다 빌드. 빌드 옵션 보려면 ./build.sh 실행하면 나옴.

빌드 결과는 filament-master/out/ 아래 경로에 생성됨.


## Xcode 프로젝트 설정
빌드된 binaries 경로 찾아서 Xcode의 Build Phases->Build Materials에 있는 스크립트에 경로 입력해야함.(입력보다는 기존 스크립트에 있는 경로를 본인 머신의 빌드 경로에 맞게 수정해야함.)

기본 shell script에 아래와 같은 형식의 경로가 있음.
기존 script
=> matc_path="../../../out/release/filament/bin/"

filament의 build 스크립트가 변경 됐는지 sample소스 script와 실제 빌드 후 path가 다름.
빌드 후 실제 경로
=> /소스위치/filament-master/out/cmake-release/tools/matc/matc
위 경로의 절대경로든 상대경로든 기존 shell script를 수정함.
script에는 위 경로가 파일 위치여야 함.(해당 파일이 있는 디렉토리 경로가 아님을 주의)
그러니까 위 경로는 matc 라는 unix binary 파일이 있는 해당 파일명을 포함한 위치임.

혹시 또 build.sh가 수정 돼서 build path가 변경 될 수 도 있으니 그럴 때는 shell에서 검색하면 됨.
소스 받은 위치로 이동해서 Build Materials의 shell script에 있는 파일명을 검색.
> find ./ -name matc
빌드를 debug, release모드로 했으니  debug/xxx, relese/xxx 이렇게 둘로 나뉜 결과가 나오면 release빌드 path 경로를 shell script에 입력(수정)하도록 한다. filament framework소스 디버깅이 필요하면 당연히 debug 경로가 들어간 path를 설정해야 함.

## Xcode에 headers, libraries 추가
Xcode에 header, library를 추가해야하는데 header 파일은 아래 경로에 분산되어 들어있음.
filament-master/filament 하위
filament-master/libs 하위

복잡하므로 header, library는 그냥 다운로드 받아서 사용함.
iOS에 추가할 라이브러리는 아래 경로에서 받으면 됨.

**Xcode에 header, library 폴더 추가 시 주의사항
- 두 폴더를 프로젝트 폴더 바로 아래에 복사 후 Xcode에 reference로 추가하도록 한다.
  그렇지 않으면 헤더 경로를 여전히 찾지 못함.
- library의 경우 project->Build Phases->Link Binary With Libraries에서 '+' 기호 선택 후
   나타나는 팝업화면에서 "Add Other..."버튼 선택하여 프로젝트 폴더 아래 복사한 "lib" 폴더 하위의
   각 xxxx.a 라이브러리 파일들을 전체 선택해서 추가 한다.

Filament sample source에서 library include코드가 아래에서 처럼 built-in 형태로 되어 있음.


#include "xxxx.h" 형식으로 customized된 코드로 변경할 수 있지만 header 파일에 있는 모든 소스를 변경해야하기 때문에 다른 방법을 찾아야함.

1. 프로젝트에 레퍼런스를 추가한다.(copy if it's needed 체크)
2. 아래 스샷에서 처럼 Build Setting-> "All", "Combined" 선택 -> Search에 "header"입력하여 검색
3. 그러면 "Search Paths" 카테고리가 나타남.
4. Header Search Paths 더블 클릭하여 경로 설정 "$(PROJECT_DIR)/include"
   : include 하위 폴더들이 있어도 알아서 빌더가 찾아서 컴파일함.
5. Library Search Paths 더블 클릭하여 경로 설정 "$(PROJECT_DIR)/lib/arm64"
   : 실제 라이브러리가 있는 위치 설정


댓글 없음:

댓글 쓰기