我在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
答案 0 :(得分:2)
我不建议你在这里做过什么。不是更改全局默认值,而是正确命名文件(ObjC为.m
,ObjC ++为.mm
,C ++为'。cpp')。如果由于某种原因这是不可能的,那么您可以选择要覆盖的单个文件。在“文件”列表中选择它们,打开检查器,然后在“标识和类型”字段中选择所需的文件类型。应该可以通过这种方式将单个文件重置回ObjC,但我建议单独保留默认值并覆盖绝对必要的位置。
将大部分代码编译为ObjC ++并不是一个好习惯。它不是一种支持良好的语言。它旨在作为ObjC和纯C ++之间的粘合剂。 ObjC ++承载了大量开销,并在编译时和运行时产生性能损失(它在运行时也比ObjC或C ++使用更多的内存)。它是调试器和其他工具支持最少的。你当然不应该把它作为你的默认语言。有关此主题的更多信息,请参阅Wrapping C++ Final Edition。