Xcode 3.1.1和静态库
我是一个经验丰富的VS.NET用户,并试图在Xcode 3.1.1上启动并运行。
这是我要完成的工作:
我想要一个静态库(" Lib")具有自己的xcodeproj文件。我将使用Lib引用Lib的xcodeproj文件来执行一个可执行应用程序(" App"),以便对Lib进行更改会导致App重新链接。理想情况下,我希望能够在App的Xcode工作区中编辑Lib的源文件,因此我不必总是花时间进行更改。
我从联机帮助中了解到,我可以将静态lib xcodeproj轻松拖到我的应用程序的项目中,并且它会获得参考。我看到,一旦我的静态库xcodeproj进入了我的应用程序项目,就可以将其拖动到应用程序的目标,并且它知道应用程序依赖Lib。这似乎是正确的道路,但是事情并没有完全按照我想要的方式进行。
这是我的问题:
- 看来,仅使App依赖Lib并不会导致App与Lib链接。看来我必须将libLib.a从Lib文件夹中明确拖到App的"使用库链接二进制文件"构建阶段。在VS.NET中,只需将项目指定为解决方案依赖项即可将其添加到链接行。我只想确保我没有丢失任何东西。
- 当我在Xcode中打开App并将Lib.xcodeproj拖到其中时,那里没有Lib的任何源文件。我只能在" Lib.xcodeproj"文件夹下找到libLib.a。在VS.NET中,我可以在那里编辑Lib的源文件并重建它,等等...但是使用Xcode中的这种方法,对Lib.cpp的更改不会在重建App时导致Lib重建。理想情况下,当我将Lib.xcodeproj拖到App中时,我会得到所有Lib的源文件和目标。有什么办法吗?
预先感谢任何回复!
解决方案
回答
打开App项目。右键单击" App"目标,然后选择"获取信息"。然后转到"常规选项卡"并找到"直接依赖关系"。单击(+)(加号)按钮以添加直接依赖项。 Lib.xcodeproj应该会出现在可能性列表中。从该列表中选择库目标。
这样就可以完成Lib项目在构建App目标时必须构建(或者重建)的过程。
(现在编辑我自己的帖子。我意识到我在问题中没有提到第二点。实际上我还在考虑第二点。我不确定这是否可行。)
回答
我还是Xcode的新用户。我所知道的大部分内容都是我从James Bucanek的Xcode书中获得的(ISBN 047175479x)。这是一本针对Xcode 2.2编写的书,但是我发现它几乎仍然适用于我,而我目前使用的是Xcode 3.1
如果我们有兴趣,可以找到便宜的二手书。
回答
我们是正确的,使目标A依赖于目标B(无论是在同一项目内还是跨项目)都不会导致目标A与目标B链接。这是因为它们是独立的概念,并且我们可能不希望彼此链接的目标之间存在依赖关系,例如,由目标C构建并用作构建一部分的命令行工具。目标A的处理。
同样,我们正确的是,从项目A中引用项目B不会让我们在项目A的窗口中看到项目B的源代码。这是因为Xcode不具有Visual Studio和Eclipse所具有的"工作区"模型。我们上面暗示了"包含项目A的工作空间"的存在,但是Xcode实际上没有任何此类内容,只是一个表示项目A的窗口。
回答
我也是Xcode 3.1的新手,我们刚才提到的问题已经玩过,发现关于第二个问题没有问题。无论我们使用什么应用程序来编辑依赖库源代码,主项目都将重建依赖关系目标。我通过以下方式检查了它:
- 通过记事本应用程序编辑了应用程序所依赖的库的源文件。
- 选择依赖库项目参考,单击鼠标右键,然后选择"使用Finder打开",然后选择所需的源文件并进行编辑。
一切正常。