这就是重点。我创建了一个子项目(静态库)。图书馆汇编得很好。没有错误。当我在项目中包含这个库并从项目中的该库导入一个头时,库无法编译,因为它找不到属于它自己的路径。
在网上关于如何创建静态库并将其嵌入到项目中的一系列教程之后,我不知道哪一个是正确的,因为我已经尝试了所有的全部失败而且有些不同。
这是库的设置方式:
静态图书馆
构建设置:
$(BUILT_PRODUCTS_DIR)
$(SRCROOT)
(递归) 构建阶段
COPY FILES = 1个文件,myLibrary.h基本上是空的(当我使用静态库模板启动库时由xcode创建。
否添加复制标题阶段
主要项目
构建设置
$(BUILT_PRODUCTS_DIR)
(递归) YES
构建阶段
myLibrary.a
是目标依赖项
让我感到惊讶的是,图书馆单独编译好,但是当放入项目时,无法找到属于自己库的标题。
注意:我还尝试在库上创建一个复制标题阶段,在该库上公开所有.h
,但它也失败了。
这是一个错误的例子:
/Users/mike/Library/Developer/Xcode/DerivedData/MyApp-dnaimaovscreasadhmvgttwjnabc/Build/Products/Debug-iphoneos/include/myLibrary/ccTypes.h:39:9:
fatal error: 'Platforms/CCGL.h' file not found
#import "Platforms/CCGL.h"
我已经失去了两天试图解决这场噩梦。
有什么想法吗?
答案 0 :(得分:12)
下载您的示例项目后,我通过进行以下更改让它在几分钟内完成。
首先,您需要在标题搜索路径下为MyProject
目标的构建设置添加一个条目,以便HelloWorldLayer.h
这样的文件#import "cocos2d.h"
知道在哪里找到该条目文件。
在Header Search Paths
下,我输入../MyStaticLibrary/MyStaticLibrary/libs/**
,如下图所示:
这解决了预处理器无法从MyStaticLibrary
为MyProject
项目找到必要的源文件的问题,但是在编译之后,我收到了关于丢失符号的错误。我需要将构建的libMyStaticLibrary.a
添加到Link Binary With Libraries
步骤,如下图所示:
之后,项目编译得很好。
答案 1 :(得分:3)
(没有足够的代表发表评论......)
您是否尝试在标题搜索路径中专门包含Platforms目录?据推测,平台位于源目录中,而不是$(BUILT_PRODUCTS_DIR),因此可能无法在当前设置中搜索。
答案 2 :(得分:3)
关于向您显示env变量的脚本,这是我的工作方式(在新选项卡中打开图像以获得更好的缩放):
如您所见,BUILT_PRODUCTS_DIR
没有从库中复制任何标头。要么手动添加标题(强烈不推荐),要么将搜索路径添加到您知道标题必须位于的位置:
现在有两个标题cocos2d.h
和MyStaticLibrary.h
,cocos2d.h
已成功导入,但它会有额外的依赖关系。
路径../MyStaticLibrary/build/$(BUILD_STYLE)-$(PLATFORM_NAME)
也将(递归地)具有库的公共头。
答案 3 :(得分:2)
经过近5天的噩梦试图解决之后,我终于找到了这个教程:http://www.youtube.com/watch?v=XUhLETxgcoE
这是唯一对我有用的解决方案。最简单也是最好的。
感谢每一个人试图解决这个问题。
答案 4 :(得分:0)
请试试这个......
步骤1:右键单击'projectName.xcodeproj'(静态库)。选择'获取信息'并复制完整路径(General-> where)
第2步:将完整路径粘贴到主项目的“标题搜索路径”(目标和项目)