编译铿锵的命令行上的多个Objective-C的文件(Compiling multiple Obje

2019-09-02 06:52发布

希望简单的问题。 我想学习基本的Objective-C在命令行编译,铿锵。 据我所知,Xcode是对于复杂的项目更好的解决方案,我打算尽快移动到它,但我个人觉得我理解的语言更好,如果我能在终端手动编译它,并为小型编程入门项目,我觉得少麻烦在终端编译不必启动一个新项目。

所以,问题是:我怎么编译包含多个文件(命令行)一个Objective-C程序? (我试图从科昌的教材第七章做了部分程序,用的main.m和Fraction.m文件,这两个#进口“Fraction.h”,而进口基础框架Fraction.h文件。)要编译单个文件我使用类似

clang -fobjc-arc main.m -o prog1

但是,如果我键入,我想包括比在该项目的main.m其他文件,我得到的错误包括:

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我尝试了其他文件作为参数添加到命令,像

clang -fobjc-arc main.m Fraction.h Fraction.m -o prog1

然后我得到

clang: error: cannot specify -o when generating multiple output files

如果我再删除诸如-O参数

clang -fobjc-arc main.m Fraction.h Fraction.m

然后我得到的错误都指的是基础架构,最终在结束了一个巨大的一堆“致命的错误:发出太多的错误,现在停止”。

如何做到这一点,并使其发挥作用? 或者,我只是需要吮吸它,并尽快多个文件涉及使用Xcode的?

Answer 1:

只有实现文件(* .M)进行编译,而不是接口/ include文件,所以这应该工作:

clang -fobjc-arc main.m Fraction.m -o prog1

“生成多个输出文件”的奇怪的错误消息可能是由以下事实铛也可以编译头文件“预编译头文件”引起的。



Answer 2:

不要指定Fraction.h作为源文件。 它不是,它是一个头文件。

您也几乎可以肯定想扔-framework Foundation 。 如果您使用任何其他框架,你可能会需要以及指定这些。



文章来源: Compiling multiple Objective-C files on the command line with clang