2013-06-19 49 views
4
  • 在Xcode中編譯源的目的是什麼?
  • 您的項目中的每個文件都需要在那裏嗎?
  • 如果我將文件添加到項目中,是否每個文件都被添加到編譯源文件中 。

enter image description here在Xcode中編譯源文件的目的是什麼?

+1

呃,如果你沒有任何資源,你會編譯什麼? (提示:打開右側的「資源管理器」窗格,左側的「導航器」打開,查看與「源」中列出的文件對應的資源管理器設置。) –

回答

12

你問

什麼是編譯源代碼的在Xcode目的是什麼?

目的是通知編譯器在構建目標的過程中應該編譯哪些源文件(例如.m文件)。

一對夫婦的時候,你可以編輯你的「編譯源」的實際例子:

  1. 除了包括或不包括在項目中的多個目標源,另一個真實世界的場景保持空閒的榜樣如果您使用的是提供源代碼的第三方庫(或一組類),但是您想要控制將在您的項目中編譯哪些源代碼,那麼您可能會排除「編譯源代碼」中的源代碼。

    例如,如果使用FMDB,則將源代碼複製到您的項目中,但其中包含示例如何使用FMDB的fmdb.m文件,但您不希望將其作爲應用程序的一部分進行編譯。你可以(也許甚至想)完全從你的項目中刪除fmdb.m,但是你也可以從你的編譯源代碼中移除一個文件,這樣你就可以很好地學習如何在你的指尖使用這些類,但是它贏得了'不要編譯成你的項目的一部分。

    另一個真實世界的例子是,如果您使用SDWebImage框架並已將源代碼包含在項目中。不過,您可能不需要MKAnnotationView+WebCache類別,在這種情況下,如果不使用地圖和MKAnnotationView類,您可能希望將其從「編譯源」中移除。如果您將其保存在項目中,那麼如果您沒有將項目與MapKit.framework鏈接起來,則可能會收到鏈接器警告。如果您沒有使用MapKit,只需從編譯源代碼中刪除MKAnnotationView+WebCache,並且需要鏈接MapKit.framework(當您可能不需要它時)就會解決。

  2. 另一次你將使用「編譯源」是當你想爲某個特定的源文件設置一個編譯器標誌。例如,如果您有一個ARC項目,但您有一些非ARC代碼。您可以進入「編譯源代碼」,選擇非ARC .m文件,並按照Transitioning to ARC Release Notes中所述設置-fno-objc-arc標誌。

  3. 如果您曾經將文件添加到項目中,但意外忽略了選擇「添加到目標」選項,那麼在構建目標時將不會編譯這些源文件。但是你可以進入「編譯源代碼」並將這些源文件添加到要編譯的文件列表中,然後將它們包含在未來的目標版本中。

你問:

是否在項目中的每個文件需要在那裏?

不,只是要編譯每個源文件(例如.m文件)。不是標題。不是資產。只需編譯你想要的源代碼。

如果我將文件添加到項目中,是否每個文件都被添加到編譯源中?

如果您在添加文件時單擊「添加到目標」複選框,.m文件將被添加到「編譯源」,並且資源將被添加到「複製軟件包資源」等。否則,慣於。

add targets

+1

+1感謝您的驚人答案! – footyapps27

4

說你有你的項目多目標,你想只有部分代碼的每一個目標,那麼你會刪除/添加的東西編譯適當來源。它基本上是一個源代碼文件列表,在構建目標時將傳遞給編譯器。例如,我可能會設置一個目標,將我的代碼的子集A構建到靜態庫中,然後構建子集B的另一個目標,與另一個目標構建的庫鏈接,並將第一個目標指定爲目標依賴關係,這樣如果我構建目標B,Xcode將首先構建目標A.

相關問題