SRCROOT 和 PROJECT_DIR 有什么不同?

在 Xcode,我们必须在 生成设置中配置许多路径,然后我们将处理 $(SRCROOT)$(PROJECT _ DIR),但它们之间的区别是什么,你能给我一个例子,thx 很多。

34516 次浏览

SRCROOTPROJECT_DIR是相同的宏,有相同的效果。当谈到框架时,PROJECT_DIR更有意义。

在实践中是可以互换的,而这些文档做出了这些微妙的理论区分:

  1. SRCROOT

    目录路径。标识包含 目标的源文件的目录: 包含定义 目标项目文件的路径。

    SOURCE_ROOTSRCROOT的非正式别名


  2. 标识包含 项目(.xcodeproj)的目录
    $(PROJECT_DIR)/build用作创建默认值:

    • 中级生成文件路径 OBJROOT
    • 构建产品路径 SYMROOT

    通常,这些路径不是针对每个目标设置的,而是针对每个项目或每个用户设置的。


  3. 标识项目本身。
    相当于 $(PROJECT_DIR)/$(PROJECT_NAME).xcodeproj

概念上不同(# 1是关于定义 目标的项目,# 2是关于任何目标的项目 独立的) ,它们总是指向同一个位置,因为从本质上讲,你总是在构建一个目标。

参考文献

Xcode 8.3构建设置参考
Xcode 构建系统指南 (退休2016-09-29)