簡體   English   中英

為什么找不到靜態庫的頭文件進行存檔?

[英]Why is a static library's header file not found for archiving?

我可以構建調試就好了。 我已經三次檢查靜態庫是否包含在項目的構建階段設置中。 我也嘗試過其他東西,比如標題包含路徑等,但無濟於事。

當我嘗試為測試飛行構建IPA時,我收到一個錯誤: #import <MBProgressHUD/MBProgressHUD.h>

我之前已經能夠構建一個IPA,但它之前沒有實現/使用MBProgressHUD靜態庫。

我可以手動包含頭文件和代碼文件,而不是靜態鏈接它,但我更喜歡知道這里發生了什么。

謝謝。

PS - 我使用https://github.com/jdg/MBProgressHUD提供的“靜態庫”說明

默認情況下,Xcode將構建產品放入$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) ,這相當於build/Release-iphoneos 這是產品內置的文件夾以及標頭將被復制到的位置。

當我們將Release配置復制到一個名為“App Store”的配置時,Xcode現在構建到build/App Store-iphoneos 實際上,問題是靜態庫仍然使用其Release配置構建到Release構建文件夾中。

因為App Store配置(至少對我而言)只是在配置文件之間輕松切換,我的解決方案是將App Store配置的“按配置構建產品路徑”更改為$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)以便App Store配置也構建到Release版本文件夾中。

在另一個SO問題( https://stackoverflow.com/a/10159481/143225 )的幫助下,我能夠獲得要包含的頭文件。

顯然,歸檔構建過程與調試構建過程有些不同。 通過將"$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts"到“用戶標題搜索路徑”構建設置,它已成功構建。

我仍然想明白為什么這不符合我的預期。 我有一個預感,該項目是為了自動包含調試和發布版本的頭文件而構建的,但不知何故不適用於存檔構建。 這很奇怪,因為我認為歸檔版本繼承自Xcode方案設置的調試或發布設置。

歡迎任何其他信息。

Daniel Tull的答案可行,但您可以更新靜態庫項目配置,以包含“App Store”配置或應用程序目標構建的任何其他命名配置,而不是更改“按配置構建產品路徑”,是Release配置的副本。 這樣,靜態庫會將它的庫和headers / include文件輸出到相應的目錄,這將通過'Per-configuration Build Products Path中使用的$(BUILD_DIR)/ $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)宏來解析。 “; 和walllaaaaa ...公共圖書館標題現在可以通過Xcode正確解決。 總而言之,如果您的應用程序目標中有一個名為“App Store”的配置,並且您鏈接到導出標題的靜態庫,請確保靜態庫項目還包含“App Store”配置,您將成為一個快樂的露營者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM