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

问题描述 投票:0回答:3

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

我的意思是,编译器是否将项目分离到简单连接的域并编译链接到主域的项目,或者只是编译全部?

objective-c xcode clang
3个回答
4
投票

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


3
投票

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


2
投票

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

对于您可以定义的每个目标,编译哪些 *.m 文件

compile for targets

如果向项目添加新文件,您可以指定将其添加到哪个目标。 (其实这是我经常看到的一个地方,没有选择主要目标——小心)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.