曾静的博客

但行好事,莫问前程.

嗨,我是曾静 (@devzeng),目前暂居深圳。


这是我用来记录平日学习笔记的地方,欢迎您的访问.

iOS开发中的Search Paths设置

在iOS开发中经常遇到一些关于路径的设置,比如引入了百度地图的SDK,项目拷贝到其他的电脑上或者多人同时开发的时候容易报Library Not Found的错误,或者是引入第三方库比如ASIHttpRequest/RETableView经常报#include <>的错误这就需要配置一些搜索路径。

ios-search-paths.png

Framework/Library Search Paths

1、Framework Search Paths

附加到项目中的framework(.framework bundles)的搜索路径,在iOS开发中使用的不是特别多,通常对于iOS的开发来说一般使用系统内置的framework。

2、Library Search Paths

附加到项目中的第三方Library(.a files)的搜索路径,Xcode会自动设置拖拽到Xcode中的.a文件的路径,为了便于移植或者是多人协作开发一般会手动设置。

比如对于设置百度的地图的SDK,我们会设置如下:

$(SRCROOT)/../libs/Release$(EFFECTIVE_PLATFORM_NAME),其中 $(SRCROOT)宏代表您的工程文件目录,$(EFFECTIVE_PLATFORM_NAME)宏代表当前配置是OS还是simulator

Header Search Path

1、C/C++头文件引用

在C/C++中,include是变异指令,在编译时,编译器会将相对路径替换成绝对路径,因此,头文件的绝对路径等同于搜索路径+相对路径

(1)#include <iostream.h>:引用编译器的类库路径下的头文件

(2)#include "hello.h":引用工程目录的相对路径的头文件

2、(User) Header Search Path

(1)Header Search Path指的是头文件的搜索路径。

(2)User Header Search Paths指的是用户自定义的头文件的搜索路径

3、Always Search User Paths

如果设置了Always Search User PathsYES,编译器会优先搜索User Header Search Paths配置的路径,在这种情况下#include <string.h>,User Header Search Paths搜索目录下面的文件会覆盖系统的头文件。

常见配置

1、libxml/tree.h not found的错误配置

在build setting中的header search path中加入${SDK_DIR}/usr/include/libxml2

参考资料

1、《iOS: Clarify different Search Paths》

2、《xcode4的环境变量,Build Settings参数,workspace及联编设置》

最近的文章

iOS8中使用CoreLocation定位

在iOS8中,苹果已经强制开发者在请求定位服务时获得用户的授权,此外iOS状态栏中还有指示图标,提示用户当前应用是否正在使用定位服务。另外在iOS8中,苹果进一步改善了定位服务,让开发者请求定位服务时需要向用户提供更多的透明。此外,iOS8中还支持让应用开发者调用全新的“访问监控”功能,当用户允许后应用才能获得更多的定位数据。iOS8以前使用CoreLocation定位1、首先定义一个全局的变量用来记录CLLocationManager对象,引入CoreLocation.framework...…

iOS继续阅读
更早的文章

iOS开发之同一应用设置不同图标和名称

经常在开发中遇到同一个App会有很多渠道版本,比如OTA内部测试版本,AppStore发布版本等。针对这些不同的版本我们通常会选择不同的图标、应用名称等,效果如下图所示:P.S上面使用的两个测试图标分别来源于土巴兔和乐视TV的iPhone版本APP的图标,是两个非常不错的APP,感谢你们。Bundle IDiOS系统区分不同的App是否相同是根据App的Bundle ID是否相同来判断的。如果想要在一个系统上安装一个App的多个版本其实是需要多个Bundle ID,就是说正式版一个Bund...…

iOS继续阅读