2013-02-22 29 views
0

我在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 

回答

2

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

将大部分代码编译为ObjC++并不是一个好习惯。它不是一个得到很好支持的语言。它旨在作为ObjC和纯C++之间的粘合剂。 ObjC++在编译时和运行时会带来很多开销并且会导致性能损失(它在运行时也会使用比ObjC或C++更多的内存)。它最少被调试器和其他工具所支持。你当然不应该把它作为你的默认语言。有关该主题的更多信息,请参见Wrapping C++ Final Edition

相关问题