Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What the different between SRCROOT and PROJECT_DIR?

In Xcode, we have to configure many paths in the Build Settings, then we will deal with the $(SRCROOT) and $(PROJECT_DIR) , But what the difference between them, can you show me an example, thx a lot.

like image 980
childrenOurFuture Avatar asked Mar 31 '16 02:03

childrenOurFuture


People also ask

What is $Srcroot?

$(SRCROOT) (aka $(SOURCE_ROOT) ) is a path to your location where a . xcodeproj is. It is simple to check, just put it in a field and Xcode gives you a tip. Follow this answer to receive notifications.

How do I change my build settings in Xcode?

Choose the project in the Project Navigator on the left. Select the Configurations target from the Targets section and click the Build Settings tab at the top. The Build Settings tab shows the build settings for the Configurations target. It's possible to expand this list with build settings that you define.


1 Answers

Exchangeable in practice, while the documentation makes these subtle theoretical distinctions:

  1. SRCROOT

    Directory path. Identifies the directory containing the target’s source files: contains the path to the project file that defines the target.

    SOURCE_ROOT is an undocumented alias to SRCROOT

  2. PROJECT_DIR
    Identifies the directory containing the project (.xcodeproj)
    $(PROJECT_DIR)/build is used as the create the default value for:

    • Intermediate Build Files Path OBJROOT
    • Build Products Path SYMROOT

    Typically these paths are not set per target, but are set per-project or per-user.

  3. PROJECT_FILE_PATH
    Identifies the project itself.
    Equivalent to $(PROJECT_DIR)/$(PROJECT_NAME).xcodeproj

Conceptually different (#1 is about the project which defines the target while #2 is about the project independently of any target), they are always pointing to the same location since you are, in essence, always building a target.

References

Xcode 8.3 Build Settings reference
Xcode Build System Guide (Retired 2016-09-29)

like image 118
SwiftArchitect Avatar answered Oct 06 '22 01:10

SwiftArchitect