4

我是一位经验丰富的 VS.NET 用户,正在尝试在 Xcode 3.1.1 上启动和运行。
这是我要完成的工作:

我想要一个静态库(“Lib”)拥有自己的 xcodeproj 文件。我有一个可执行应用程序(“App”),它使用 Lib 来引用 Lib 的 xcodeproj 文件,以便对 Lib 的更改导致 App 重新链接。理想情况下,我希望能够在 App 的 Xcode 工作区中编辑 Lib 的源文件,这样我就不必一直忙于进行更改。

我从在线帮助中发现,我可以简单地将静态库 xcodeproj 拖到我的应用程序项目中,它会获得参考。我看到一旦我的静态库 xcodeproj 在我的应用程序的项目中,我可以简单地将它拖到应用程序的目标上,它就知道应用程序依赖于 Lib。这似乎是正确的道路,但事情还没有按照我想要的方式进行。

以下是我的问题:

  1. 似乎仅仅让 App 依赖于 Lib 并不会导致 App 与 Lib 链接。看来我必须将 libLib.a 从 Lib 文件夹显式拖到 App 的“Link Binary With Libraries”构建阶段。在 VS.NET 中,只需将项目指定为解决方案依赖项即可将其添加到链接行。我只是想确保我没有遗漏任何东西。

  2. 当我在 Xcode 中打开 App 并将 Lib.xcodeproj 拖入其中时,那里没有任何 Lib 的源文件。我只在“Lib.xcodeproj”文件夹下获得 libLib.a。在 VS.NET 中,我可以在此处编辑 Lib 的源文件并重新构建它,等等......但是在 Xcode 中使用这种方法,当我重新构建 App 时,对 Lib.cpp 的更改不会导致 Lib 重新构建。理想情况下,当我将 Lib.xcodeproj 拖到 App 中时,我会显示所有 Lib 的源文件和目标。有没有办法做到这一点?

提前感谢您的任何回复!

4

4 回答 4

9

您是正确的,使目标 A 依赖于目标 B(无论是在同一项目内还是跨项目)不会导致目标 A 链接到目标 B。您需要明确指定它们;这是因为它们是独立的概念,并且您可能在希望彼此链接的目标之间存在依赖关系 - 例如,由目标 C 构建并用作构建的一部分的命令行工具目标 A 的过程。

此外,您是正确的,从项目 A 中引用项目 B 不会让您在项目 A 的窗口中看到项目 B 的源代码。那是因为 Xcode 没有与 Visual Studio 和 Eclipse 相同的“工作区”模型。您在上面提到了“包含项目 A 的工作区”的存在,但 Xcode 并没有任何这样的东西,只是一个代表项目 A的窗口。

于 2008-09-18T01:33:52.557 回答
4

打开应用程序项目。右键单击应用程序目标并选择“获取信息”。然后转到“常规选项卡”并找到“直接依赖项”。单击 (+)(加号)按钮添加直接依赖项。Lib.xcodeproj 应该出现在您的可能性列表中。从该列表中选择 Lib 目标。

这应该实现在构建 App 目标时必须构建(或重新构建)Lib 项目。

(现在编辑我自己的帖子。我意识到我对问题中的第 2 点只字未提。我实际上仍在考虑第 2 点。我不确定这是否可能。)

于 2008-09-17T23:11:40.540 回答
0

我也是一个相当新的 Xcode 用户。我所知道的大部分内容都是从 James Bucanek 的 Xcode 书中学到的(ISBN 047175479x)。这是一本为/使用 Xcode 2.2 编写的旧书,但我发现其中几乎所有内容今天仍然适用于我,我目前使用 Xcode 3.1

如果您有兴趣,您可能会找到便宜的二手副本。

于 2008-09-17T23:20:30.037 回答
0

我也是Xcode 3.1的新手,刚刚玩过你提到的问题,发现你的第二个问题没有问题。无论您使用什么应用程序来编辑依赖库源代码,您的主项目都将重建依赖目标。我通过以下方式检查了它:

  1. 通过记事本应用程序编辑了您的应用程序所依赖的库的源文件。
  2. 选中依赖库项目引用,鼠标右键,选择'Open With Finder',然后选中想要的源文件并进行编辑。

一切运作良好。

于 2009-11-13T14:35:28.037 回答