关于macos:Xcode 3.1.1和静态库

关于macos:Xcode 3.1.1和静态库

Xcode 3.1.1 and static libraries

我是一个经验丰富的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的源文件和目标。有什么办法吗?

  • 预先感谢您的任何回复!


    您是正确的,使目标A依赖于目标B(无论是在同一项目内还是跨项目)都不会导致目标A与目标B链接。这是因为它们是分开的概念,并且您可能不希望相互链接的目标之间存在依赖关系,例如,由目标C构建并用作构建一部分的命令行工具目标A的处理。

    同样,您正确的是从项目A中引用项目B不会让您在项目A的窗口中看到项目B的源代码。这是因为Xcode与Visual Studio和Eclipse没有相同的"工作区"模型。您上面暗示了"包含项目A的工作空间"的存在,但是Xcode实际上没有任何此类内容,只是一个表示项目A的窗口。


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

    这样就可以完成Lib项目在构建App目标时必须构建(或重建)的过程。

    (现在编辑我自己的帖子。我意识到我在问题中没有提到第二点。实际上我还在考虑第二点。我不确定这是否可行。)


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

  • 通过记事本应用程序编辑了应用程序所依赖的库的源文件。
  • 选择依赖库项目参考,单击鼠标右键,然后选择"使用Finder打开",然后选择所需的源文件并进行编辑。
  • 一切正常。


    我也是Xcode的新用户。我所知道的大部分内容都是我从James Bucanek(ISBN 047175479x)的Xcode书中学到的。这是一本针对Xcode 2.2编写的书,但是我发现它几乎仍然适用于我,并且我目前使用的是Xcode 3.1

    如果您有兴趣,可以找到便宜的二手书。


    推荐阅读