我是一位经验丰富的VS.NET用户,并试图在Xcode 3.1.1上运行 这就是我想要完成的事情:
我想要一个静态库(“Lib”)拥有自己的xcodeproj文件。我有一个可执行应用程序(“App”),它利用Lib来引用Lib的xcodeproj文件,这样对Lib的更改会导致App重新链接。理想情况下,我希望能够在App的Xcode工作区内编辑Lib的源文件,这样我就不必一直在任务进行更改。
我从在线帮助中发现,我可以简单地将静态lib xcodeproj拖到我的应用程序项目中,然后获取引用。我看到,一旦我的静态lib xcodeproj在我的应用程序的项目中,我可以简单地将其拖到App的目标,它理解App依赖于Lib。这似乎是正确的道路,但事情并没有像我希望的那样运作。
以下是我的问题:
似乎简单地让App依赖于Lib并不会导致App与Lib链接。看来我必须将LibLib.a从Lib文件夹中显式拖到App的“Link Binary With Libraries”构建阶段。在VS.NET中,只需将项目指定为解决方案依赖项即可将其添加到链接行。我只是想确保我没有遗漏任何东西。
当我在Xcode中打开App并将Lib.xcodeproj拖入其中时,我没有得到任何Lib的源文件。我只在“Lib.xcodeproj”文件夹下获得libLib.a。在VS.NET中,我可以在那里编辑Lib的源文件并重建它等等......但是在Xcode中使用这种方法,在重建App时,对Lib.cpp的更改不会导致Lib重建。理想情况下,当我将Lib.xcodeproj拖到App中时,我会得到所有Lib的源文件和目标。有没有办法做到这一点?
提前感谢您的回复!
答案 0 :(得分:9)
你是正确的,让目标A依赖于目标B(无论是在同一个项目内还是在项目中),不会导致目标A与目标B相关联。您需要明确指定它们;这是因为它们是单独的概念,并且您可能在不希望彼此链接的目标之间存在依赖关系 - 例如,由目标C构建的命令行工具和用作目标A的构建过程的一部分。
另外,你是正确的,从项目A中引用项目B不会让你在项目A的窗口中看到项目B的源代码。那是因为Xcode没有与Visual Studio和Eclipse相同的“工作空间”模型;你上面提到存在“包含项目A的工作空间”,但Xcode实际上没有任何这样的东西,只是一个窗口代表项目A.
答案 1 :(得分:4)
打开App项目。右键单击App目标,然后选择“获取信息”。然后转到“常规选项卡”并找到“直接依赖关系”。单击(+)(加号)按钮以添加直接依赖项。 Lib.xcodeproj应该出现在您可能的列表中。从该列表中选择Lib目标。
这应该可以实现Lib项目在构建App目标时必须构建(或重建)。
(现在编辑我自己的帖子。我意识到我在问题中没有提到第2点。我实际上还在考虑第2号。我不确定这是否可能。)
答案 2 :(得分:0)
我也是Xcode的新用户。我所知道的大部分内容都来自James Bucanek的Xcode书(ISBN 047175479x)。这是一本为Xcode 2.2编写的旧书,但我发现今天几乎所有它仍然适用于我,我目前使用的是Xcode 3.1
如果您有兴趣,可以找到便宜的二手副本。
答案 3 :(得分:0)
我也是Xcode 3.1的新手,只是玩了你提到的问题,发现你的第二个问题没有问题。无论您使用哪种应用程序编辑依赖库源代码,您的主项目都将重建依赖目标。我查了一下:
一切运作良好。