是否应将头文件添加到目标?

时间:2014-06-12 07:52:09

标签: c++ xcode build

创建.h文件时,Xcode取消选中“目标”框。但通常会添加.cpp / .m / .mm文件。

何时应该而且不应该将.h文件视为构建系统中的目标?

2 个答案:

答案 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源文件,并集成到源文件的构建中,因此存在(通常)不需要独立编译头文件。