2013-02-22 28 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

相關問題