Xcode4 包含iOS项目和相关静态库项目的工作区
我正在使用Xcode 4工作区。目前Xcode 4获胜。因此,我的情况是: 我有iOS应用程序项目的工作区。此工作区中还有iOS应用程序依赖的静态库项目Xcode4 包含iOS项目和相关静态库项目的工作区,xcode4,static-libraries,header-files,Xcode4,Static Libraries,Header Files,我正在使用Xcode 4工作区。目前Xcode 4获胜。因此,我的情况是: 我有iOS应用程序项目的工作区。此工作区中还有iOS应用程序依赖的静态库项目 解决方案#1 我尝试这样配置: 应用程序项目: 添加到目标的构建阶段>将二进制文件与产品库链接(libmystaticlib.a) 将USER\u HEADER\u SEARCH\u path设置为$(TARGET\u BUILD\u DIR)/usr/local/include$(DSTROOT)/usr/local/include
解决方案#1 我尝试这样配置:
- 应用程序项目:
- 添加到目标的构建阶段>将二进制文件与产品库链接(
)李>libmystaticlib.a
- 将
设置为USER\u HEADER\u SEARCH\u path
李>$(TARGET\u BUILD\u DIR)/usr/local/include$(DSTROOT)/usr/local/include
- 添加到目标的构建阶段>将二进制文件与产品库链接(
- 静态库项目:
- 将一些头文件添加到目标的构建阶段>复制头文件>公共文件李>
- 将
设置为SKIP\u INSTALL
YES
*.ipa
:(
解决方案#2 我还尝试了另一种配置:
- Xcode首选项:
- 为静态库设置源代码树,例如,
ADDITIONS\u项目
- 为静态库设置源代码树,例如,
- 应用程序项目:
- 添加到目标的构建阶段>将二进制文件与产品库链接(
)libmystaticlib.a
- 将
用户\标题\搜索\路径设置为
$(添加\项目)/**
- 添加到目标的构建阶段>将二进制文件与产品库链接(
- 静态库项目:
- 不要将任何头文件添加到Public
- 将
设置为SKIP\u INSTALL
YES
*.ipa
我不喜欢第二种解决方案,因为在这种情况下,我没有从Xcode 4工作区中获得任何真正的优势。如果我在应用程序项目中添加静态库项目,我可以添加get。因此,我认为我的解决方案有问题。
有没有关于如何更好地链接静态库的建议?我目前正在努力解决同样的问题。我没有比你进步太多。我只能在第二个解决方案中添加,你可以将需要使用的标题从库拖动到应用程序项目,而不是设置添加项目和用户标题搜索路径。这将使在应用程序项目中使其可见。在这种情况下,SKIP_INSTALL标志的值并不重要。
尽管如此,这个解决方案对我来说还是不起作用,因为我正在将一个相当大的项目,有几十个库,从Xcode 3转移到Xcode 4,这意味着要使我的项目正确构建和存档,需要进行大量的拖放。如果你能找到更好的解决方法,请告诉我们。我们终于找到了答案。好吧,种类of、 出现此问题的原因是,Xcode 4在构建存档期间将公用标头放在InstallationBuildProductsLocation文件夹中。显然,在存档时,它会看到这些标头并尝试将其放入存档。例如,将库的公用标头文件夹路径更改为InstallationBuildProductsLocation之外的某个位置,以$(DSTROOT)/../public_文件夹并将此路径添加到标题搜索路径可以解决此问题。
这个解决方案看起来并不优雅,但对我们来说,它似乎是唯一的选择。也许你会发现它很有用。我可以使用Core Plot作为静态库和工作区同级,有两种构建配置: 发布:
- 在项目中,标题搜索路径:“$(内置产品目录)”
- 在CorePlot CoCoCoatTouch中,公用标题文件夹路径:/usr/local/include
- 在项目中,标题搜索路径:“$(内置产品目录)”/../../../public\u文件夹/**
- 在CorePlot CoCoCoatTouch中,公用标头文件夹路径:../../Public\u folders
希望它能帮助人们不要在这件事上浪费一天的时间。我还找到了一个可以与构建和归档一起使用的解决方案。
在静态库中,将公用标题文件夹路径设置为
。/../Headers/YourLib
在应用程序配置中,将标题搜索路径设置为
$(build\u PRODUCTS\u DIR)/../../Headers
在您的应用程序中,您可以编写#导入
不要忘记静态库中的Skip Install=YES
选项。这是一个从Apple DTS获得的解决方案。我不喜欢它,因为建议使用绝对路径。但我仍然在这里发布它,也许有人觉得它适合他
如何设置静态库:
- 通过复制发布配置添加名为“Archive”的生成配置
- 将标题移动到复制标题生成阶段的项目组
- 将“存档”配置的每配置生成产品路径设置为$(Build_DIR)/MyLibBuildDir。Xcode将在BuildProductsPath中创建MyLibBuildDir文件夹,然后将静态库添加到该文件夹中。您可以使用“MyLibBuildDir”或为上述文件夹提供其他名称
- 对于所有配置,将“跳过安装”设置为“是”
- 将“存档”的安装目录设置为$(TARGET_TEMP_DIR)/UninstalledProducts
- 编辑其方案,将其存档操作的生成配置设置为“存档”
如何根据库设置项目链接:
- 通过复制发布配置添加名为“Archive”的生成配置
- 将“Archive”的库搜索路径设置为$(BUILD\u DIR)/MyLibBuildDir
- 将用户标题搜索路径设置为workspace director根目录的递归绝对路径