将 Objective-C++ 文件添加到 C++ Xcode 5 项目

Posted

技术标签:

【中文标题】将 Objective-C++ 文件添加到 C++ Xcode 5 项目【英文标题】:Adding an Objective-C++ file to a C++ Xcode 5 project 【发布时间】:2014-11-26 16:23:21 【问题描述】:

我正在尝试将 ObjC++ 文件添加到大型 Xcode 5 C++ 项目中。

出于遗留原因,“将源编译为”设置必须保持为“C++”。如果我可以将此设置更改为“根据文件类型”,则 ObjC++ 文件将正确构建,但如果 Xcode 认为它是 C++ 文件,它将无法编译。

我已尝试将标识和类型下的 .mm 文件的类型显式设置为“Objective-C++ Source”,编译器仍尝试将其构建为 C++ 文件。我尝试在 Build Phases > Compile Sources 下将“-ObjC”和“-ObjC++”编译器标志添加到单个文件中,但我收到一条警告,指出该参数在编译期间未使用。

我已经反向尝试了这个过程,将一个 ObjC++ 文件添加到另一个项目,该项目将源编译为“根据文件类型”,并将类型设置为 C++。正如预期的那样,该文件无法构建。这表明指定单个文件的类型优先于项目设置。

有没有办法强制 Xcode5.1.1/llvm5.1 将单个 ObjC++ 或 ObjC 文件构建为正确的类型?在我测试过的每种情况下,项目设置都被单个文件设置覆盖,除了尝试构建 ObjC++ 文件。这是一个错误还是缺少的功能?

【问题讨论】:

你为什么不使用像 CMake 这样的真正的构建系统? 【参考方案1】:

你已经接近 ObjC++ 标志了。

在编译源构建阶段将文件的编译器标志设置为-x objective-c++ $(inherited)

【讨论】:

以上是关于将 Objective-C++ 文件添加到 C++ Xcode 5 项目的主要内容,如果未能解决你的问题,请参考以下文章

使用 CMake 链接到可可库(C++ 与 Objective-C 混合)

将不同组中的 C++ 文件包含到 Objective-C++ 测试中

从 C++ 和 Objective-C++ 链接到 Cocoa 框架

将 Swift 类添加到具有多个目标的 Objective-C 项目

Objective-C 使用 C++类

添加 minizip 中断 Objective-C