2009-11-23 90 views
4

我使用Xcode作为我的OS X版本的一部分,但由于它不是唯一使用的IDE,所以可以直接从文件系统添加文件。Xcode文件系统

据我所知,有添加文件夹的方式有两种:

  • 文件夹参考拿起所有的文件系统上的变化,但不注册的任何文件作为来源。
  • 递归复制允许所要构建的文件,但我需要不断地维护文件结构

我想知道是否有办法设置的Xcode构建所有的的一部分的文件文件夹引用或失败,如果有快速脚本来自动修复文件系统差异。从添加/现有的文件导入另一个文件

回答

0

Xcode的AppleScript字典有做这些任务所需的名词和动词。假设其他IDE的构建脚本知道哪些文件被添加/删除,您可以编写非常简单的AppleScript来充当胶水。例如,脚本可以使用一个指定文件的参数来添加到Xcode中当前打开的项目中。另一个脚本可能需要一个参数来从当前项目中删除一个文件。然后,您的其他IDE可以像构建脚本中的其他命令行工具那样调用这些脚本。

0

我不知道任何内置功能来完成此操作。如果你需要它是自动的,你最好的选择可能是写一个Folder Action AppleScript并将它附加到你的项目文件夹。

尽管如此,它很可能是一个相当困难的(也许相当脆弱的)解决方案。

2

我想出了概念验证解决方案,但需要一些工作才能在生产中使用。基本上,我设置了一个新的“外部目标”,它将给定目录中的所有源文件编译为静态库。然后静态库链接到主应用程序。

详细:

  1. 创建一个目录(可以称之为“代码”)项目目录中,并把一些源代码在里面。
  2. 在代码目录中创建一个Makefile以将源文件编译为静态库。我看起来像this。*****
  3. 创建一个外部目标(让我们称之为'ExternalCode')并将其指向源代码和Makefile所在的代码目录。
  4. 构建ExternalCode并在项目的Products区域中创建对编译的静态库(ExternalCode.a)的引用。获取参考信息并将路径类型更改为“相对于内置产品”。
  5. 确保ExternalCode.a位于主目标的“链接二进制库”部分。
  6. 将ExternalCode目标添加为主目标的依赖项
  7. 将Code目录添加到主目标的“用户头搜索路径”中。

现在,当您将一些源文件放入“代码”中时,Xcode应重新编译所有内容。我创建了一个demo project作为概念验证。要查看它的工作方式,请将'tmp'目录中的B.h/m复制到'Codes'目录中。

*注意事项:我提供的Makefile过于简化。如果你想在真实的项目中使用它,你需要花费一些时间使所有的构建标志正确。您必须决定是否值得手动管理构建过程,而不是让Xcode为您处理大部分细节。注意有空白的路径; Make不能很好地处理它们。

+0

似乎这是最好的自动化解决方案,即使它感觉非常黑客。我很惊讶Xcode没有像Eclipse这样的内置文件系统处理。我可能会继续做手动同步的每日仪式... – fengb 2009-12-02 05:03:58

+0

@fengb我同意这有点冒失,但这是我能想出的最佳选择。在生产环境中使用相同的外部目标技术来处理一些非客观的C位,并且目前工作正常。 – amrox 2009-12-02 13:53:00

0

这不是很漂亮,我认为它只能解决一半的问题,但是......如果您递归复制,然后退出xcode。然后删除这些文件夹,并将它们替换为原始文件夹的simlink,至少有文件被视为代码,并且它们与其他IDE正在查看的文件相同......您仍然需要手动添加和删​​除文件。

我有种怀疑,有没有更好的方式来做到这一点没有某种形式的脚本(如文件夹操作),因为Xcode允许你在一个项目中有多个目标,所以它不会知道你想自动包含任何特定目标中的所有文件。所以,你将不得不每次手动添加每个文件到当前目标...