创建.h文件时,Xcode取消选中“目标”框。但通常会添加.cpp / .m / .mm文件。
何时应该而且不应该将.h文件视为构建系统中的目标?
答案 0 :(得分:1)
因为.h文件包含在源文件中。 “目标”是你必须自己编译的东西(“源文件”)。
说我们有
Foo.cpp中
#include "foo.h"
...
... lots more stuff here ...
...
int main()
{
... some code goes here ...
}
然后编译器将foo.cpp
编译成目标文件,并使用链接器组件将其转换为可执行文件。
foo.h
文件包含在foo.cpp
中,并在那里编译。如果我们有一个复杂的项目,bar.cpp
也可能包含foo.h
,所以它被编译两次 - 这不是一个问题[通常],因为头文件应该只包含可以编译到你的东西可执行多次 - 如果不是这样,“你做错了”。
答案 1 :(得分:1)
.cpp
/ .m
和.mm
文件等源文件会被编译为二进制文件(通常为.obj
个文件)。
标头文件,例如.h
,由C预处理器(在文本级别几乎逐字逐句)获取#include
源文件,并集成到源文件的构建中,因此存在(通常)不需要独立编译头文件。