Включение разрешения символов C++11 в Eclipse Juno ADT
Я использую Eclipse Juno с плагином ADT (Инструменты разработчика Android), загруженным с https://dl-ssl.google.com/android/eclipse/.
Я создал проект приложения Android с включенной поддержкой Native (щелкните правой кнопкой мыши проект → "Инструменты Android" → "Добавить поддержку Native").
Несмотря на ориентацию на C++11 в моем Application.mk
а также Android.mk
В файлах Eclipse не удается разрешить символы, такие как std:: thread или std:: unique_ptr, но когда я собираю проект, он хорошо компилируется: единственная проблема - разрешение символов C++11.
Как я могу заставить Eclipse правильно распознавать символы C++ 2011?
1 ответ
Если ваш Eclipse Juno с плагином ADT может скомпилировать код C++11, но не может разрешить символы C++11, вот процедура:
Открыть свой
.cproject
файл в текстовом редакторе.Найдите следующую строку (где XXXXXXXXX - случайное число):
<tool id="com.android.gcc.compiler.XXXXXXXXX" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
Добавьте в него следующее:
<option id="com.android.gcc.compiler.option.preprocessor.def.768340103" superClass="com.android.gcc.compiler.option.preprocessor.def" valueType="definedSymbols"> <listOptionValue builtIn="true" value="__cplusplus=201103L"/> <listOptionValue builtIn="false" value="__cplusplus=201103L"/> <listOptionValue builtIn="true" value="__GXX_EXPERIMENTAL_CXX0X__"/> <listOptionValue builtIn="false" value="__GXX_EXPERIMENTAL_CXX0X__"/> </option>
У вас должно быть что-то вроде этого (где YYYYYYYYYY также является случайным числом):
<tool id="com.android.gcc.compiler.XXXXXXXXX" name="Android GCC Compiler" superClass="com.android.gcc.compiler"> <option id="com.android.gcc.compiler.option.preprocessor.def.768340103" superClass="com.android.gcc.compiler.option.preprocessor.def" valueType="definedSymbols"> <listOptionValue builtIn="true" value="__cplusplus=201103L"/> <listOptionValue builtIn="false" value="__cplusplus=201103L"/> <listOptionValue builtIn="true" value="__GXX_EXPERIMENTAL_CXX0X__"/> <listOptionValue builtIn="false" value="__GXX_EXPERIMENTAL_CXX0X__"/> </option> <inputType id="com.android.gcc.inputType.YYYYYYYYYY" superClass="com.android.gcc.inputType"/> </tool>
Сохраните изменения, перезапустите Eclipse и, если символы C++11 все еще не решены, перестройте свой индекс (щелкните правой кнопкой мыши по проекту → "Индекс" → "Перестроить").
Поскольку вкладка "Символы" не была видна в опциях C/C++ проекта, я был вынужден добавить эти строки вручную в .cproject
файл для того, чтобы установить значение __cplusplus
в 201103L
,
Я не знаю точно, как работают файлы.cproject, поэтому, возможно, есть лучший способ сделать это. Я видел, как некоторые парни меняли параметры набора инструментов проекта, чтобы сделать вкладку "Символы" видимой (здесь сборка Android NDK, метод не может быть решен, и здесь Настройка C++11 (std::thread) для NDK с ADT / Eclipse).