关于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

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


    推荐阅读

      更新文件命令linux?

      更新文件命令linux?,工作,系统,地址,信息,时间,命令,目录,基础,标准,网络,lin

      linux命令删除用户组?

      linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,

      linux运行图形界命令?

      linux运行图形界命令?,系统,密码,地址,电脑,图形界面,地方,工具,界面,终端,

      linux怎样运行命令?

      linux怎样运行命令?,系统,工作,信息,基础,地址,命令,目录,工具,密码,一致,Lin

      开机启动命令linux?

      开机启动命令linux?,软件,标准,环境,工作,设备,系统,名称,情况,电脑,位置,lin

      linux编译完运行命令?

      linux编译完运行命令?,系统,代码,环境,工具,信息,命令,文件,程序,终端,编辑,

      linux文件全选命令?

      linux文件全选命令?,电脑,系统,环境,代码,平台,服务,快捷键,文件,命令,权限,l

      linux浏览文件类命令?

      linux浏览文件类命令?,系统,信息,数据,情况,命令,标准,时间,文件,概念,管理,

      linux启动sh命令?

      linux启动sh命令?,工作,系统,代码,服务,脚本,文件,命令,目录,方法,权限,Linux

      linux命令程序运行?

      linux命令程序运行?,状态,系统,服务,情况,命令,进程,软件,数据,发行,时间,Lin

      linux重名名文件命令?

      linux重名名文件命令?,图片,名称,名字,文件,命令,位置,代码,软件,系统,文件

      linux启动信息命令?

      linux启动信息命令?,系统,信息,时间,命令,工作,检测,情况,设备,标准,管理,lin

      linux将文件备份命令?

      linux将文件备份命令?,系统,密码,设备,软件,通讯,较大,认证,服务,数据,文件,L

      linux扩展文件命令?

      linux扩展文件命令?,工作,地址,系统,信息,命令,目录,管理,情况,文件,标准,Lin

      linux注销命令用户?

      linux注销命令用户?,系统,服务,密码,地址,工作,命令,状态,工具,信息,基础,lin

      linux系统用户命令?

      linux系统用户命令?,系统,工作,地址,信息,管理,命令,目录,时间,电脑,名称,请

      linux文件替换命令行?

      linux文件替换命令行?,资料,命令,文件,数据,名称,系统,实时,工作,字符串,批

      linux命令行自启动?

      linux命令行自启动?,服务,系统,脚本,设备,人员,工具,密码,最新,实时,代码,lin

      linux命令行解锁文件?

      linux命令行解锁文件?,系统,地址,工具,工作,管理,电脑,命令,文件,信息,密码,L