如何使Xcode项目源文件与文件系统目录保持同步?

Sco*_*t S 16 version-control xcode project xcode3.2

我是XCode的新手,我发现文件管理非常痛苦.在大多数IDE中,您只需让项目源树引用磁盘上的目录结构即可.这样可以轻松地将新文件添加到项目中 - 您只需将它们放在磁盘上,它们就会自动编译.

使用XCode,似乎我必须创建文件并单独将其添加到项目中(或者被迫通过UI操作文件系统).但这意味着通过源代码控制共享.xcodeproj充满了问题 - 通常,我们会在xcodeproj文件上出现合并冲突 - 当我们不这样做时,我们经常会遇到链接器错误,因为在合并期间会出现一些文件在项目中列出的被删除.所以我必须将它们重新添加到项目文件中,直到我可以编译它,然后重新检查项目文件.

我相信我必须在这里遗漏一些东西.我尝试使用'参考文件夹',但其中的代码似乎没有被编译.构建一个强制每个人在向项目添加或删除文件时修改单个共享文件的IDE似乎很疯狂.

Pau*_*ell 5

尽管有其他答案,但这绝对不同于其他IDE,也是一个重大的麻烦.我知道没有好的解决方案.

我经常使用的一个技巧是让它更具可忍性 - 特别是对于包含大量文件的资源目录 - 是:

  • 选择项目树中的目录,
  • 点击删除键,
  • 然后选择"仅删除引用"
  • 将目录拖到项目中以重新添加它.

这会破坏文件的任何手动重新排序,但它至少会同步O(1)操作,而不是更改文件数量的O(n).

  • 好主意。真是太痛苦了,但是为 iOS 开发的许多方面也是如此。 (2认同)

the*_*ill 0

我很好奇您使用的是哪些 IDE 可以自动编译目录中的所有内容,因为我使用过的 IDE 都没有这样做(至少对于 C++ 而言)。我认为拥有一个包含所有文件列表的项目文件是相当标准的。通常,您可能只想包含不同目标的某些文件、每个文件的编译器设置等。

不管怎样,考虑到它就是这样工作的,你真的不应该因为合并冲突而遇到太多问题。最好的建议是尽早并经常做出承诺,这样您就不会与其他人的更改步调一致。仅将文件添加到项目中不会导致冲突,除非它们恰好添加到项目树中的同一位置。我们团队中使用 Xcode 已经很多年了,我们很少会遇到冲突:只有当有人重组了项目时才会发生冲突。

幸运的是,由于 Xcode 文件格式是文本,因此在发生冲突时通常很容易解决冲突,这与二进制格式的 Codewarrior 的糟糕旧时光不同。

  • 例如,Eclipse 就是这样工作的。我确信还有其他的 - 项目文件非常愚蠢 - 当您通常只想要目录结构中的所有文件,并具有潜在的忽略过滤器时。也就是说,冲突似乎确实是可以解决的。 (4认同)
  • 实际上有很多适用于 Linux/BSD/etc 的 make 文件。系统就是这样工作的。源文件按目录排序,make 文件基本上知道,在构建目标 A 时,它必须编译文件夹 a、b 和 c 中的所有文件,并将所有生成的 .o 文件链接在一起,在构建目标 B 时,它有编译文件夹 b、e 和 f 中的所有文件。当同时构建两个目标时,同一个文件夹不会构建两次,除非 make 文件已经以这种方式编写。 (2认同)
  • NetBeans 和 Visual Studio 也这样做,大多数刚接触 Xcode 的人可能都来自这三个 IDE。我发现 Xcode 最烦人的是移动文件并不会在磁盘上移动该文件,因此您最终会得到与 Xcode 中的内容不匹配的令人困惑的文件结构。Visual Studio 确实需要向其中添加文件,但是当移动文件时,它也会将其移动到磁盘上。 (2认同)