2016-06-16 3 views
0

Swift로 작성된 OSX 프로젝트에 libsass (C 라이브러리)를 가져 오려고합니다. 하지만 어쨌든 나는 많은 의존성 문제를 다루고 있습니다. Btw이 안내서의 모듈지도 을 여기에 사용하고 있습니다 : https://spin.atomicobject.com/2015/02/23/c-libraries-swift/.C 라이브러리를 Swift 프로젝트로 가져 오기


libsass의 REPO : 나는 C에서 (예를 제공 libsass) 프로그램을 version.c을 실행할 수 있어요 https://github.com/sass/libsass

는 :

#include <stdio.h> 
#include "sass/context.h" 
int main() { 
    puts(libsass_version()); 
    return 0; 
} 

내 접근 방식은 헤더 파일을 가져올 수 있었다 'libsass/include'디렉토리에 있습니다. 여기

는 지금까지 뭘하려 :

1 나는 module.map 파일을 내장하고 libsass 디렉토리에 넣습니다. 그때 스위프트 컴파일러 설정 내 빠른 프로젝트

3> 검색 경로>로 가져 오기 경로 '$ {SRCROOT}/libsass'

4에 디렉토리를 추가

module libsass [system] { header "include/sass.h" export * } 

2

빌드와 나는 이것을 만난다 :

'sass/base.h' file not found with <angled> include; use "quotes" instead 
'sass/version.h' file not found with <angled> include; use "quotes" instead 
'sass/values.h' file not found with <angled> include; use "quotes" instead 

5 빌드 설정> 검색 경로가> 헤더 검색 경로로 설정 '$ (PROJECT_DIR)/libsass/포함'

빌드 설정> 검색 경로>로 설정 라이브러리 검색 경로 '$ (PROJECT_DIR)/libsass/포함을'

내가 이전 오류를 볼 수 있지만 test_superselector.cpp에 새로운 오류가 발생하지 않는이 시간 :

6

내가> 기타 링커 플래그를 연결> 설정을 구축하기 위해 '-lsass'추가. libsass가 제공 한 예제에서 -lsass 플래그를 사용하여 C 코드를 컴파일합니다.

같음, 좋지 않음.

나는 2 일 동안 이것을 알아 내려고 노력했지만 분명히 진전이 없었다. libsass repo를 살펴보십시오. 어떤 도움을 주시면 감사하겠습니다. 감사합니다 !!

답변

0

간단히 github의 libsass 코드를 살펴 보았습니다. Xcode 프로젝트에 libsass 소스 디렉토리를 추가해야하고 프로젝트의 일부로 라이브러리 소스를 빌드하려고하기 때문에 ast.hpp 파일을 찾을 수 없습니다.

링커 플래그에 -lsass을 추가 했으므로 프로젝트에서 이미 빌드 된 라이브러리를 사용하려고 노력하고있는 것으로 생각됩니다. 더 깨끗한 접근 방식이며 모듈 맵이 유용합니다.

Xcode 프로젝트에 libsass 디렉토리를 추가하지 마십시오. libsass 헤더와 라이브러리를 포함하는 디렉토리를 프로젝트 디렉토리에 배치 할 수 있습니다. 이는 프로젝트에 추가하는 것과 다릅니다.

의 줄은 module.map의 위치에 상대적인 헤더의 절대 경로 또는 경로를 가져야합니다.

다른 몇 가지 관찰 :

  • 라이브러리 검색 경로가 libsass 라이브러리 파일이있는 디렉토리를 포함해야합니다. 예를 들어 정적 라이브러리 인 경우 이면 파일 이름은 libsass.a입니다.
  • 라이브러리 소스를 보면 C++ 라이브러리이므로 을 Swift에서 직접 사용할 수 없습니다. 래퍼가 필요합니다 (예 : Objective-C++로 작성된 ).
관련 문제