Frameworkの穴を作る

2830 ワード

今日新しくframeworkを自作する時、2つの穴に出会って、記録して、frameworkの制作について他の文章を参考することができます;背景:既存のworkspaceに3つのプロジェクトが統合され、static libraryのプロジェクトが2つ、マスターエンジニアリングが1つあります.プライマリエンジニアリングは2つのstatic出力のframework結果に依存し,プライマリエンジニアリングbuildのたびに依存するlibrary projectに対してbuildを入力し,最新のframeworkを得る.プロジェクトが追加され、xxxFWという名前のstatic libraryに設定されました.他の補助ライブラリは、そのライブラリの出力結果に依存します.

ピット1:新規frameworkが参照された後、workspace build時にbuildが行われず、ライブラリのヘッダファイルを参照する際にヘッダファイルが見つからない。


解決方法:1.build---は行われていません.私のworkspaceにはExecutableオブジェクトが1つしかありません.つまり、デフォルトのschemeのマスターエンジニアリングですが、他のschemeは他の補助frameworkであり、補助frameworkはstatic libraryに設定されているので、彼自身はアクティブにコンパイルする能力がなく、他のtriggerによって受動的にトリガーされる必要があります.私のプロジェクトでは補助static library projectでxxxFWを引用しましたが、主工事では引用していません.だから今問題を解決するのは簡単で、メインエンジニアリングのbuild phases-link binary with librariesにxxxFWを追加するだけです.frameworkはxxxFWをコンパイルすることができます;2.ヘッダファイルが見つかりません---xxxFWプロジェクトでその出力結果を指定したディレクトリにリダイレクトします.例えば、プライマリエンジニアリングのFrameworksディレクトリの下に、セカンダリライブラリにプライマリエンジニアリングの下のライブラリファイルを導入すればいいです.build setting -> build locations -> Pre-configuration Build Products Pathでリダイレクト設定を行います.

ピット2:自作frameworkが成功した後、使用時にライブラリのヘッダファイルを参照して「Missing Submodule」と警告します。


『Frameworkの警告「Missing Submodule」warningを作る』という記事がありますが、この問題の解決についてはよく分からないと思います.私は作者の基礎の上で色を塗って、作者がおかしくないことを望んでいます.stackflowについて
I ran into the same problem and eventually fixed it by adding my project headers into the umbrella header. When you create a new framework it should start with a single .h file titled by the project (in your case DirectProximityFramework.h).

Inside this file is a comment:

In this header, you should import all the public headers of your framework using statements like #import 
So just add your GeofencingHelper.h file in this file:

#import 
This should remove all of your warnings!

言うことは正しいし、xcodeの設計構想でもあるはずだ.私の理解する意味は、1.自作frameworkは、機能をサブモジュール化することに相当する.Missing Submoduleを報告する場合、露出するヘッダファイルをframework projectと同名のumbrella header--xxxFW.hにすべて導入するだけで警告を除去することができる.引用文で述べたように、framework projectと同名のumbrella headerヘッダファイルには、In this header, you should import all the public headers of your framework using statements like #import というプロンプトがあります.すなわち、露出するヘッダファイルをすべてヘッダファイルに引き出し、フォーマットは#import です.推奨方法は、xxxFWにデフォルトではないため、pchファイルにヘッダファイルを導入するべきではない.pchファイルは、もちろんxxxFW.hファイルは他の次元からpchの機能がありますが、一定の誤導性があります.その時私はas_を見終わった.oneの文章はよく分からなかったが、注意してくれたので、umbrella headerにすべてのヘッダファイルを導入した後、警告も消えた.したがって,xcodeにおけるテンプレート生成のヒントは,前述したようにas_oneの文章が私にヒントを与えたのはframeworkを作成する際にxcodeのヒントに注意したことがあるからですが、導入する必要はないと思って、露出する必要があるヘッダファイルをpublicに構成すればよかったのに、こんな穴に横になってしまいました.