Включение разрешения символов 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, вот процедура:

  1. Открыть свой .cproject файл в текстовом редакторе.

  2. Найдите следующую строку (где XXXXXXXXX - случайное число):

    <tool id="com.android.gcc.compiler.XXXXXXXXX" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
    
  3. Добавьте в него следующее:

    <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>
    
  4. Сохраните изменения, перезапустите Eclipse и, если символы C++11 все еще не решены, перестройте свой индекс (щелкните правой кнопкой мыши по проекту → "Индекс" → "Перестроить").


Поскольку вкладка "Символы" не была видна в опциях C/C++ проекта, я был вынужден добавить эти строки вручную в .cproject файл для того, чтобы установить значение __cplusplus в 201103L ,

Я не знаю точно, как работают файлы.cproject, поэтому, возможно, есть лучший способ сделать это. Я видел, как некоторые парни меняли параметры набора инструментов проекта, чтобы сделать вкладку "Символы" видимой (здесь сборка Android NDK, метод не может быть решен, и здесь Настройка C++11 (std::thread) для NDK с ADT / Eclipse).

Другие вопросы по тегам