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

Я не рекомендую, что вы сделали здесь. Вместо того, чтобы изменять глобальный стандарт, гораздо лучше правильно назвать ваши файлы (.m для ObjC и .mm для ObjC++, '.cpp' для C++). Если по какой-то причине это невозможно, вы можете выбрать отдельные файлы для переопределения. Выберите их в списке «Файлы», откройте инспектор, а в поле «Идентификация и тип» выберите тип файла, который вы хотите для каждого. Должна быть возможна перезагрузка отдельных файлов обратно в ObjC таким образом, но я рекомендую оставить по умолчанию один и переопределить там, где это абсолютно необходимо.

Неправильная практика заключается в том, чтобы скомпилировать большую часть вашего кода как ObjC++. Это не хорошо поддерживаемый язык. Он предназначен как клей между ObjC и чистым C++. ObjC++ несет много накладных расходов и берет на себя ответственность за производительность во время компиляции и времени выполнения (он также использует больше памяти во время выполнения, чем ObjC или C++). Это наименее поддерживается отладчиком и другими инструментами. Вы, конечно, не должны делать это своим языком по умолчанию. См. Wrapping C++ Final Edition для получения дополнительной информации по этому вопросу.

Смежные вопросы