用于编译特定文件的标志

时间:2013-02-22 19:52:53

标签: objective-c xcode objective-c++ compiler-flags

我在xcode上使用配置来编译源代码作为Objective-C ++,但我添加了一个库,我希望将它编译为Objective-C,有办法吗?

我的配置:

//:configuration = Debug
CLANG_CXX_LIBRARY = libstdc++

//:configuration = Release
CLANG_CXX_LIBRARY = libstdc++

//:completeSettings = some
GCC_C_LANGUAGE_STANDARD
CLANG_CXX_LIBRARY
GCC_CW_ASM_SYNTAX

//:configuration = Debug
CLANG_CXX_LIBRARY = libstdc++
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp

//:configuration = Release
CLANG_CXX_LIBRARY = libstdc++
GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp

//:completeSettings = some
GCC_C_LANGUAGE_STANDARD
CLANG_CXX_LIBRARY
GCC_CW_ASM_SYNTAX
GCC_INPUT_FILETYPE

1 个答案:

答案 0 :(得分:2)

我不建议你在这里做过什么。不是更改全局默认值,而是正确命名文件(ObjC为.m,ObjC ++为.mm,C ++为'。cpp')。如果由于某种原因这是不可能的,那么您可以选择要覆盖的单个文件。在“文件”列表中选择它们,打开检查器,然后在“标识和类型”字段中选择所需的文件类型。应该可以通过这种方式将单个文件重置回ObjC,但我建议单独保留默认值并覆盖绝对必要的位置。

将大部分代码编译为ObjC ++并不是一个好习惯。它不是一种支持良好的语言。它旨在作为ObjC和纯C ++之间的粘合剂。 ObjC ++承载了大量开销,并在编译时和运行时产生性能损失(它在运行时也比ObjC或C ++使用更多的内存)。它是调试器和其他工具支持最少的。你当然不应该把它作为你的默认语言。有关此主题的更多信息,请参阅Wrapping C++ Final Edition