Xcode - 自动将文件夹中的所有文件添加到目标

时间:2010-05-19 20:14:00

标签: xcode build build-process build-automation

在Xcode中,有没有办法指定文件夹中的所有文件都是由目标编译的。例如。 'Test'目标自动编译'Tests'文件夹中的所有文件,而'App'目标编译'Sources'文件夹中的所有内容。

今天,我这样做的方法是每次创建一个文件到目标。由于文件已经组织在正确的文件夹中,因此感觉有点容易出错和冗余。

感谢。

9 个答案:

答案 0 :(得分:8)

将文件添加到Xcode项目时,您可以在文件选择对话框中选择两个选项:

  1. 为任何添加的文件夹创建组。
  2. 为任何添加的文件夹创建文件夹引用。
  3. 您需要选择第二个选项。在这种情况下,Xcode将始终反映所选文件夹的文件和子文件夹的更改。

    好像很久以前就问了这个问题,但它仍然是谷歌搜索的第一名,所以希望这对某人有用。

答案 1 :(得分:5)

这在Xcode中完全被破坏了。按文件夹引用添加文件夹(@ Pavel的答案)应该是正确的 - 但它不起作用。另见https://stackoverflow.com/a/42600782/2518722。我正在使用Xcode 8.3(更新:在Xcode 10中仍然存在损坏),但它之前已经被破坏了很多代。

没有完美的解决方法,但这就是我的工作:

  1. 将目录拖到项目中
  2. 询问时,请按以下方式设置选项:
    • 选择为任何添加的文件夹创建群组(即与您认为正确的相反)
    • 取消选择 复制文件(如果需要)(因为您需要链接,而不是副本)。
  3. 现在,对共享目录中文件的任何更改都将反映在Xcode中,这很好。

    但是,没有办法让小组感到高兴。 (有人请告诉我,如果我在这里遗漏了一些明显的东西。)因此,如果您已将新文件添加到目录中,则必须在Xcode中删除该组并在这些文件出现之前重新添加。这显然不方便,但至少它不太容易出现用户错误 - 并且比逐个手动添加文件更好。

    不得不说,我觉得开发环境的这么简单和必要的功能在这里被打破是非常难以置信的。

答案 2 :(得分:4)

您可以使用此功能向目标添加多个文件。但它需要一些工作来过滤你想要的文件。

项目>目标>编译源> cmd + A选择所有文件>过滤.m文件>点击“添加”

与其他资源类似,

项目>目标>复制捆绑资源>过滤.png .wav .strings .xib .storyboard等。>点击“添加”

答案 3 :(得分:2)

以下是有关stackoverflow试图解决此问题的其他一些问题:

Add files to an Xcode project from a script?

Automatically adding generated source files to an xcode project

答案 4 :(得分:0)

是 - 只需选择文件夹中的所有文件,然后使用检查器窗口(目标选项卡)。

答案 5 :(得分:0)

您可以采用的一种方法是使用CMake为您生成Xcode目标。

详情:CMake - Automatically add all files in a folder to a target?

另一个可能的途径是配置自定义构建阶段。

答案 6 :(得分:0)

我只是按类型排序,所以我的所有源文件都会连续列出。

然后我按住Shift+Cmd,然后按向下箭头键选择我想要的所有文件。

选择后,我只需选中所有即可添加到特定目标:)

答案 7 :(得分:0)

据我所知, Xcode中没有错误,并且Xcode 从不支持这样的机制(根据目标自动从目标中添加/删除源文件系统中的可用性)。

Group变体(groups-representing-a-folder与“ regular” groups)仅使您可以灵活地查看项目树的外观-如果它紧紧跟随磁盘上的存储库,或者更具“可读性”和描述性-不论源在存储库中的位置如何。

我说的是我使用的所有Xcode版本-即v1.0b2至v11.3

无论如何,我承认拥有这样一种机制作为一项新功能(我们可以为此向苹果承诺)将是一件好事。

现在执行此操作的一种方法可能是构建一个小的新的“编译器”,其输入是文件夹路径,并且其“生成的代码”将是该文件夹中的源文件集。如果我们将这样的“编译器”作为构建规则添加到目标中---我们可能会达到预期的效果。

如果要深入研究,请遵循Protobuf可以添加到Xcode项目中的方式,以及如何在Xcode目标中处理CoreML模型。

答案 8 :(得分:-1)

Xcode可以使用shell脚本进行扩展。您可以将shell脚本设置为在构建时运行,这样您基本上可以使xcode执行您想要的任何操作。您只受到shell脚本功能的限制,我相信您也可以为此找到帮助。