c/c++语言开发共享使用clang在命令行上编译多个Objective-C文件

希望简单的问题。 我正在尝试使用clang从命令行学习基本的Objective-C编译。 我知道Xcode是复杂项目的更好解决方案,我计划尽快转向它,但我个人认为如果我可以在终端中手动编译它,我会更好地理解一种语言,而对于小型的入门编程项目,我发现它更少在终端编译比在必须启动新项目时更麻烦。

所以问题是:如何编译包含多个文件的Objective-C程序(从命令行)? (我正在尝试从Kochan教科书的第7章开始执行分数程序,其中main.m和Fraction.m文件都是#import“Fraction.h”,以及导入Foundation框架的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?

    只编译实现文件(* .m),而不是接口/包含文件,所以这应该工作:

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

    奇怪的错误消息“生成多个输出文件”可能是因为clang还可以将头文件编译为“预编译头文件”。

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

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

    需要了解更多c/c++开发分享使用clang在命令行上编译多个Objective-C文件,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享使用clang在命令行上编译多个Objective-C文件相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979637.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐