【问题标题】:Two targets, two header files with the same name how to use each header for the right target?两个目标,两个同名的头文件如何使用每个头文件为正确的目标?
【发布时间】:2013-02-15 18:05:45
【问题描述】:

好的,这就是我尝试过的。

我在两个独立的目录 IRL 中有头文件。它们的名称相同,但位于两个不同的位置。

我只想包含每个目标的相关头文件。为了便于解释,我们将头文件称为“Config.h”。

所以我有:

${PRODUCT_DIR}/Header1/Config.h

${PRODUCT_DIR}/Header2/Config.h

这些文件出现在 Xcode 的 LHS 中以及两个不同的组中(指向 IRL 文件夹的 Header1 和 Header2)。

所以现在我需要做的就是让 Xcode 从每个目标的正确文件夹中选择正确的。

目标1

目标2

我尝试为每个目标添加User Header Search Paths 的路径,但它仍然选择了错误的路径。我还尝试切换“始终搜索用户路径”,这似乎也没有效果。

所以我的问题是,这是因为它们在项目目录中吗?还是因为它们在 LHS 文件管理器的 Xcode 中,所以 Xcode 将它们复制到构建文件夹中?

奇怪的是,它似乎是从姓氏字母顺序的文件夹中选择头文件...

在以前版本的 Xcode 中,我相信您可以选择将哪些标头复制到构建文件夹中。

无论如何.. 有谁知道我该如何解决这个问题,以便我可以让它为目标选择正确的头文件?

非常感谢。

【问题讨论】:

  • 我不确定,但是条件导入呢?
  • 这是备用计划。 :) 但它会比这种方式添加更多的步骤。我相信这应该是可能的。
  • 1.其实我不明白为什么你有“标题搜索路径”的问题。尝试从项目中排除这些标头,并且不要使用“**”递归搜索路径。 2. 通常我使用不同的“include”和“ifdef else”。因此,您可以将任何全局变量添加到任何目标并检查您必须包含的内容(例如:“ifdef target1 #include”header1.h“else #include”header2.h“endif;)。所以这取决于您的要求。

标签: ios xcode header


【解决方案1】:

我遇到的问题是 2 倍:

  1. 您需要从项目中删除头文件。如果它们在 Xcode 中,在文件管理器中,那么它们将自动包含在项目中。

  2. 您需要在“用户标题搜索路径”中使用文件夹的相对路径。我使用的是${PROJECT_DIR}/path/to/header/folder,它给出了正确的路径,但似乎无法正常工作。将条目更改为 ./path/to/header/folder 反而效果很好。

【讨论】:

  • 如果我无法从项目中删除标头,因为我正在构建一个框架并且它们是公共标头,该怎么办?
  • @NicolasMiari 你能找到解决这个问题的方法吗?
【解决方案2】:

我在 1 个项目中有 4 个目标和 40 多个标头,这是 XCode 8 中的最佳解决方案 我认为最好的解决方案是更改以下标签:

Always Search user Paths

是的,对我来说一切都很好:

【讨论】:

  • 此设置自 Xcode 8.3 起已弃用,未来版本可能不支持此设置。建议您禁用该设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 2018-06-06
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多