每个文件都是用Objective-C编译的吗?

时间:2012-07-05 18:20:44

标签: objective-c xcode compiler-construction clang

我想知道,当我在Objective-C中构建项目时编译了哪些代码 - 我的项目中的每一行代码,或者只有那些从main.c调用然后从那些调用的代码。是从他们那里打来的?

我的意思是,编译器是否将项目与简单连接的域分开并编译链接到main的域,或者只编译它?

谢谢你们,伙计们!

3 个答案:

答案 0 :(得分:4)

编译器不对您的代码执行语义分析。它完全编译你告诉它编译的内容--Xcode通常以一种方式调用编译器,它将每个文件编译到你的应用程序中。但是,没有必要编译/链接没有使用类/函数的文件;虽然没有编译使用类/函数的文件会导致链接错误(也就是说,编译器在将最终可执行文件的目标代码放在一起时将无法在二进制文件中找到某些符号)。

答案 1 :(得分:3)

项目中的所有文件都会被编译,除了任何.m文件中未包含的头文件,或者包含有条件抑制的头文件。

答案 2 :(得分:2)

Xcode项目由一个或多个目标组成。

对于您可以定义的每个目标,* .m-files得到编译

compile for targets

如果向项目添加新文件,则可以指定要添加的目标。 (实际上这是一个我经常看到的地方,主要目标没有被选中 - 小心)

enter image description here