簡體   English   中英

將項目的標頭包含到靜態庫中

[英]including a header from a project into a static library

我的項目中有一個子項目(靜態庫)。

由於一堆應用程序可能會使用此靜態庫,因此我的項目中有一個包含應用程序配置的config.h文件。 靜態庫必須讀取它。

問題是添加

#import "config.h" 

靜態庫上的文件失敗,因為找不到文件。

我可以在搜索標頭上為我的項目根目錄添加絕對路徑,但是我想對此進行硬編碼,因為此靜態庫將由其他項目使用。 另一個問題是,我不能使用../ ..之類的相對鏈接,例如,因為靜態庫在另一個卷上。

在靜態庫的搜索路徑中包含$(SRCROOT)將為我提供該庫的根目錄,而不是使用它的項目的根目錄,這就是我想要的。

我該如何解決?

請注意我的問題。 我在一個項目使用的靜態庫中。 Config.h在項目中。 我想在我的靜態庫中導入該config.h。

如果有簡便的方法,請告訴我。

我已經在此處此處上傳了一個示例項目,因此您可以看到我的痛苦。

謝謝

一種方法(有點像hack)是將運行腳本添加到每個應用程序的構建階段 (作為第一項),然后將Config.h復制到某個已知位置-/tmp/Config.h,您所包含的庫將看起來像為此。 由於文件是在每個構建版本上復制的,因此它將永遠是正確的。

EDIT1:不太漂亮,但是您可以在庫中的Dependencies下添加一個Run Build Script。 只需添加一個,然后保留復選框以顯示環境變量即可。 您可以看到這一套:

FILE_LIST = /卷/數據/用戶/ dhoerl /庫/開發人員/Xcode/DerivedData/MyProject-fdzaatzqtmrnzubseakedvxmsgul/Build/Intermediates/MyStaticLibrary.build/Debug-iphoneos/MyStaticLibrary.build/Objects/LinkFileList

您會看到,其中一些具有當前項目文件夾的前綴:

/卷/數據/用戶/程序/庫/開發人員/ Xcode / DerivedData / MyProject-

您可以在此處編寫一些腳本以獲取前綴,然后追加本地Config.h文件路徑,現在您具有Config.h標頭的完全限定路徑,然后可以將其復制到庫中的已知位置。 我將在xcode論壇上發帖,因為可能會有更好的解決方案-Xcode 3中曾經有過。如果我得到實質性的回報,我會進行更新。

EDIT2:試試看:1)單擊庫,單擊“構建階段”,通過點擊右下角的“ +”按鈕添加“運行腳本構建”階段

2)拖動它,使其成為列表中的第二項(在“目標依賴項”下面)

3)將Shell更改為“ / bin / ksh”

4)在編輯它以使其具有正確的文件/路徑后,將其粘貼:

# Get the Project Name (assumes upper/lower/numbers only in name)
PROJ=$(echo $BUILD_DIR | sed -En -e 's/(\/.*\/)([A-Za-z0-9]+)-([a-z]+\/Build\/Products)/\2/p')
# Use this variable to construct a full path
FULL_PATH="/Volumes/Data/Users/dhoerl/Downloads/nightmare/"$PROJ"/"$PROJ"/HelloWorldLayer.h"
echo FULL_PATH equals $FULL_PATH
# Make Sure MyStaticLibrary is correct
echo PROJ_DIR equals "$PROJECT_DIR/MyStaticLibrary"
cp -f "$FULL_PATH" "$PROJECT_DIR/MyStaticLibrary"

5)假定您將庫放置在所需的任何位置,但是每個App項目必須具有相同的父文件夾(沒有太多限制-我過去所做的事情)。

PS:執行此類操作時,通常不包括應用程序的實際文件,而是為未在庫中實例化的類創建頭。 讓我們稱之為Foo。 因此,在您的庫中,您擁有Foo.h,並且它有許多返回信息的方法-小部件的數量,某些特殊文件夾的位置,plists,數組,字典等。 這個想法是庫知道如何通過此接口(單例類,或僅帶有類方法的類。YMMV)獲取所需的信息。

PSS:任何其他閱讀此書的人,都要創建演示項目。

我會走另一條路。 使用其中的編譯器符號將config.h文件作為靜態庫的一部分來切換功能。 然后,在項目中根據所需的功能定義這些符號。

暫無
暫無

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

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