2012-10-10 28 views
0

在我的項目中,我使用不同的標誌來處理多個目標時運行不同的代碼。喜歡的東西是否可以將參數傳遞給框架/庫?

#ifdef MY_FLAG 
//do this 
#else 
//do this other 
#endif 

現在我對我的方式來採取一些代碼,外部庫,但我不希望編譯成不同版本的每個標誌庫的,所以問題是:

有沒有辦法傳遞一些參數,從外部告訴庫(或框架)哪些代碼應該以「全局」方式運行?

回答

0

你在做什麼#ifdef正在建立編譯器可以看到的代碼。所以你將不得不爲每個標誌編譯不同的版本,因爲庫鏈接了但已經被編譯。我想這個問題更多的是你在磁盤上做什麼。

您可以將多個CPU架構存儲到單個靜態庫中。所以那些僅僅是針對ARMv7,ARMv7s還是i386的標誌都可以用一個庫來處理。

對於其他你可能會產生不同的庫。但是,這只是磁盤佔用空間形狀的問題 - 您可以使用與庫鏈接的任何項目的項目設置,以便根據構建配置鏈接到不同版本的庫。

0

一種選擇是讓框架提供框架用戶可以調用的某種初始化方法或函數。這將告訴框架應該運行哪種「模式」。框架的客戶端可以在應用程序啓動時調用它。

相關問題