2016-05-13 23 views
1

我正在用混合的Objective-C和Swift源文件構建一個框架。
我創建了自己的模塊映射文件module.modulemap。如何讓編譯器查看我的Framework module.modulemap傘頭?

我的問題是編譯器編譯只是我的傘頭文件時,我把絕對路徑:

Not working!

Working, Yeah!

如何讓編譯器/ Xcode中看到的頭文件?

+0

你是否試過在目標成員資格中將TestObject.h文件標記爲「Public」而不是「Project」?嘗試查看是否有幫助,如果尚未完成。 –

+0

是的,TestObject.h被標記爲公共。 – Jbryson

+1

我明白了。如何在構建設置下快速搜索路徑?還有什麼具體的原因,你甚至需要module.modulemap文件?爲了說清楚,爲了在同一個框架項目中實現Swift/Objective-C&C的互操作性,您只需要一個傘頭文件和正確的構建設置(請參閱更多信息:https://developer.apple.com/library 「將Objective-C導入Swift」和「將Swift導入Objective-C」部分中的/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html) –

回答

0

好的,所以我找到了問題。 (或者其中之一)。看起來要能夠使用傘頭,頭文件必須是實際的頭文件。在這種情況下,我只是使用項目中唯一的頭文件,它也有一個.m文件。

我的解決方案是創建一個包含以下內容的實際UmbrellaHeader.h文件:

#ifndef UmbrellaHeader_h 
#define UmbrellaHeader_h 

#include "TestObject.h" 

#endif /* UmbrellaHeader_h */ 
0

FYI:如果你的項目有它的頭相之前編譯源代碼,並試圖創建一個混合Objective- C/Swift框架中,您可以看到關於缺少傘頭的Swift編譯器錯誤。如果您刪除/重命名所有.swift文件,則項目將生成良好,然後將其重新生成將再次生成,但乾淨的生成將失敗。

只需在構建過程的早些時候移動Headers階段,它就可以工作。

相關問題