Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有比其他链接器标记更好的方法链接到iOS上特定于配置的静态库?_Ios_Xcode_Cocoa - Fatal编程技术网

有没有比其他链接器标记更好的方法链接到iOS上特定于配置的静态库?

有没有比其他链接器标记更好的方法链接到iOS上特定于配置的静态库?,ios,xcode,cocoa,Ios,Xcode,Cocoa,情况:链接到一个SDK(我正在构建),该SDK具有静态库(.a文件)的发布、调试和分发版本。在Xcode GUI中似乎没有一种方法表明静态库只用于给定的配置 我可以在目标或项目设置的“生成”窗格中使用“其他链接器标志”(Other_LDFLAGS),如下所示: -all_load-ObjC“${SRCROOT}/MySDKFolder/${CONFIGURATION}-universal/libMYsdk.a” 这似乎有效。只是想知道是否有人知道更好的方法。(所有加载和-ObjC将正确链接Obj

情况:链接到一个SDK(我正在构建),该SDK具有静态库(.a文件)的发布、调试和分发版本。在Xcode GUI中似乎没有一种方法表明静态库只用于给定的配置

我可以在目标或项目设置的“生成”窗格中使用“其他链接器标志”(Other_LDFLAGS),如下所示:

-all_load-ObjC“${SRCROOT}/MySDKFolder/${CONFIGURATION}-universal/libMYsdk.a”

这似乎有效。只是想知道是否有人知道更好的方法。(所有加载和-ObjC将正确链接ObjC类别)


我现在使用的是GCC4.2(默认情况下是4.3SDK和3.x.xXcode的SDK)。

因此,我让Xcode用户界面迷惑了我。如果您添加带有${CONFIGURATION}变量的通用搜索路径,然后将一个静态库实例添加到项目和目标中,它将做正确的事情并链接到正确的库,即使您在项目中获得关于该库的信息,它也会显示特定的路径

但是,如果您希望它实际对其中一个静态库进行Xcode通知更改,则需要将静态库的所有版本添加到项目和目标中(是的,看起来它与这三个库都链接,不用担心!)


要让Xcode检测到由于生成脚本阶段而更改的.a文件,您必须在运行脚本输入窗格中实际拥有用于生成.a文件的所有源文件(很痛苦!),这样就不必每次都运行生成脚本;以及输出窗格中.a文件的所有三个变体,以便Xcode知道在脚本运行后检查什么,以查看是否需要重新链接项目。

可以使用相同的${CONFIGURATION}类型字符串将目录添加到搜索路径,但是,当您将实际的.a文件添加到项目中时,它会添加到特定文件的链接,因此您只能获得该版本的.a文件/库。现在有一种方法可以编辑已添加到项目中的文件的路径,以便您可以将${配置)在其中键入内容。您只能通过文件系统选择文件。至少我已经找到了。实际上,您可以手动编辑project.pbxproj文件中的路径。该文件在Xcode中显示为红色,但在链接时会正确解析。这与您在其他\u LDFLAGS设置中所做的相同。谢谢,但是YIKES!:-)不确定是否符合“更好”。你就是这样的黑客0xced:-D(非常尊重地说)事实上,这样做可能更好的一种方式是,如果这样做可以让项目注意到这些文件已经更改,从而正确地进行依赖性检查。如果它以红色显示它们,好像找不到它们,我不这么认为。