2014-01-15 20 views
7

私が作成したフレームワークのmy podspecファイルの定義に問題があります。私は、次のファイル構造を有する:cocoapods podspecファイルのヘッダー検索パスを定義します

Xcodeで
/ 
|-- module1/<source files> 
|-- module2/<source files> 
... 
|-- moduleN/<source files> 
|-- core-api/ 
| |-- module1/<header files> 
| |-- module2/<header files> 
| ... 
| +-- moduleN/<header files> 
|-- framework.podspec 
+-- framework.xcodeproj 

Xcodeのが正しく、公開ヘッダファイルを見つけることができるように、私はUSER_HEADER_SEARCH_PATHS$(SRCROOT)/core-apiを追加しました。

マイpodspecファイルは次のようになります。

現在
s.default_subspec = 'module1' 

s.subspec 'module1' do |ss| 
    ss.source_files    = "module1/**/*.{h,m}" 
end 

s.subspec 'module2' do |ss| 
    ss.source_files    = "module2/**/*.{h,m}" 
end 

... 

s.subspec 'moduleN' do |ss| 
    ss.source_files    = "moduleN/**/*.{h,m}" 
end 

、コアAPIのヘッダの場所を定義一切ディレクティブはありません。 pod lib lint私は、対応するcore-apiヘッダが見つからないというエラーが発生します。

私はss.header_dirss.header_mapping_dirs.xcconfigUSER_HEADER_SEARCH_PATHで回っていましたが、どれも私のために働いていませんでした。

podspecファイルのヘッダファイルの場所を正しく定義するにはどうすればよいですか?

EDIT1:

I最初から再作成specファイルと、各サブ仕様で、コアAPIのヘッダファイルを追加する必要があると思われること、が分かりました。

マイspecファイルは次のように今見える:私はsubspecを使用したい場合は

s.default_subspec = 'module1' 

s.subspec 'module1' do |ss| 
    ss.public_header_files  = "core-api/module1/*.h" 
    ss.source_files    = "module1/**/*.{h,m}" 
end 

s.subspec 'module2' do |ss| 
    ss.public_header_files  = "core-api/module1/*.h" 
    ss.source_files    = "module2/**/*.{h,m}" 
end 

... 

s.subspec 'moduleN' do |ss| 
    ss.public_header_files  = "core-api/module1/*.h" 
    ss.source_files    = "moduleN/**/*.{h,m}" 
end 

ただし、この場合には、モジュールのヘッダは、のみ追加されます。 module1と2だけを使用したい場合は、他のモジュールのヘッダーがありません。 core-apiヘッダーフォルダーは、フレームワーク内のすべてのモジュールで常に使用できる必要があります。それ、どうやったら出来るの?

答えて

2

https://stackoverflow.com/a/33359337/4063462

正しいpodspecファイルなければならないが、次のようになります。

s.default_subspec = 'module1' 

s.subspec 'module1' do |ss| 
    ss.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/core-api/module1/*.h"' } 
    ss.source_files    = "module1/**/*.{h,m}" 
end 

s.subspec 'module2' do |ss| 
    ss.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/core-api/module1/*.h"' } 
    ss.source_files    = "module2/**/*.{h,m}" 
end 

... 

s.subspec 'moduleN' do |ss| 
    ss.xcconfig = { 'USER_HEADER_SEARCH_PATHS' => '"${PODS_ROOT}/core-api/module1/*.h"' } 
    ss.source_files    = "moduleN/**/*.{h,m}" 
end 
0

あなたは別のsubspecの依存関係としてsubspecを定義することができます。

Pod::Spec.new do |s| 
    s.name = 'RestKit' 

    s.subspec 'Core' do |cs| 
    cs.dependency 'RestKit/ObjectMapping' 
    cs.dependency 'RestKit/Network' 
    cs.dependency 'RestKit/CoreData' 
    end 

    s.subspec 'ObjectMapping' do |os| 
    end 
end 

ソース:Podspec syntax reference

関連する問題