【问题标题】:force to compile a specific file as Objective-C/file type, but the entire project as Objective-C++强制将特定文件编译为 Objective-C/文件类型,但将整个项目编译为 Objective-C++
【发布时间】:2014-01-18 00:15:30
【问题描述】:

我正在向一个已经存在的项目添加一些功能。它按预期工作。

然后我从一个打开的库中向该项目添加了几个文件。

现在,Xcode 无法编译整个项目。

调查原因,我发现问题是“编译源为”标志,它默认设置为“Objective-C++”。

将该标志切换为其他值会使 Xcode 抱怨。在任何情况下都有数百个错误。 我的想法是以前的开发人员这样做是为了避免将 .c、.cpp、.m 重命名为 .mm。他已经不在这里了。所以,很难说。

知道如何解决这个问题吗? 我看到几个选项:

  1. 根据需要重命名文件。这意味着数百 文件重命名。或者
  2. 我强制 Xcode 将特定文件编译为 Objective-C/file 类型,但整个项目为 Objective-C++ 或
  3. 我创建了一个小项目,然后生成了一个共享库。

我想继续选项 2。可以吗?以及如何?

还有什么想法吗?

谢谢

【问题讨论】:

  • 你试过在侧面板的Identity和Type中设置文件的类型吗?如果将文件类型更改为 Objective-C,无论扩展名是什么,它都会编译为 Objective-C。
  • @StephenJohnson 这应该是一个答案,确定吗?即 Xcode 允许选项(2),这是相关的下拉菜单...(编辑:(1)也不会很难自动化,请参见例如reviews.cnet.com/8301-13727_7-57411491-263/…
  • @Stephen Johnson:试过了。没用。
  • @Tommy:问题在于,并非所有东西都是 Objective-C++。我必须有选择地将 .m、.c、.m 更改为 .mm。假设如果一个 Objective-C++ 包含在一个 Objective-C 文件中,那么最后一个也需要是 Objective C++
  • 从长远来看,选项 1 更好。这可能需要一些时间,但最终您将拥有每个人都能理解的一致的源文件名。

标签: c++ ios objective-c xcode


【解决方案1】:

我采用了最简单的方法:强制 Xcode 将特定文件编译为 Objective-C,但将整个项目编译为 Objective-C++。

在 Build Phases 的每个文件中添加了编译器标志 -x objective-c> 'Compile source as'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-12
    • 2011-02-25
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多