c/c++ 头文件引用问题
include <> 引用编译器的类库路径下的头文件
include “” 引用工程目录的相对路径的头文件
include 是编译指令,在编译时,编译器会将相对路径替换成绝对路径,因此,头文件绝对路径=搜索路径+相对路径。
Xcode Build Settings 下 Search Paths设置搜索路径
Header Search Paths:头文件搜索路径设置
$(SRCROOT)宏和$(PROJECT_DIR)宏都指xxx.xcodeproj所在的父目录
例如:引用工程testDemo/scr/test.h 头文件,
Header Search Paths中添加$(SRCROOT),引用为include “scr/test.h"
如果在Header Search Paths中添加$(SRCROOT)/scr,那么头文件引用直接引用 include “test.h”
include <> 引用编译器的类库路径下的头文件
include “” 引用工程目录的相对路径的头文件
include 是编译指令,在编译时,编译器会将相对路径替换成绝对路径,因此,头文件绝对路径=搜索路径+相对路径。
Xcode Build Settings 下 Search Paths设置搜索路径
Header Search Paths:头文件搜索路径设置
$(SRCROOT)宏和$(PROJECT_DIR)宏都指xxx.xcodeproj所在的父目录
例如:引用工程testDemo/scr/test.h 头文件,
Header Search Paths中添加$(SRCROOT),引用为include “scr/test.h"
如果在Header Search Paths中添加$(SRCROOT)/scr,那么头文件引用直接引用 include “test.h”
如果设置了 Always Search User Paths 为 yes,编译器会先搜索User Header Search Paths路径下的目录,在这种情况下include <string.h>,User Header Search Paths 搜索目录下的文件会覆盖系统的头文件
Xcode Header Path的设置
Header Search Paths是一定会去搜索的。
而User Header Search Paths只有在Always Search User Paths为Yes时才会被搜索。
Project的设置默认并不被Targets继承,只有当Targets的设置加入了$(inherited)时才被继承
如果设置了还是搜索不到,可能是路径错误,这时可以尝试全路径确认路径是否填错。
如果你#include "A/B/x.h",则设置的path下面必须可以找到A。把xxx/A/B设为path还是找不到x.h的,把A所在xxx设为path则可以找到。
填入路径时,左边有个勾选框,如果不选则只搜你填入的path,勾选则会搜索path下所有子目录