Включение разрешения символов C++11 в Eclipse Juno ADT

Я использую Eclipse Juno с подключаемым модулем ADT (Android Developer Tools), загруженным с https://dl-ssl.google.com/android/eclipse/.

Я создал проект приложения Android с включенной встроенной поддержкой (щелкните правой кнопкой мыши проект "Инструменты Android" и выберите "Добавить встроенную поддержку").

Несмотря на то, что в моих файлах Application.mk и Android.mk используется C++11, Eclipse не может разрешить такие символы, как std::thread или std::unique_ptr, но когда я создаю проект, он хорошо компилируется: единственная проблема - разрешение символов C++11.

Как я могу заставить Eclipse правильно разрешать символы С++ 2011?


person HRold    schedule 08.08.2014    source источник
comment
@HRold - вам просто нужно подождать 8 часов, а затем опубликовать свой ответ. Я удалил [Решено] из заголовка и ответа. Ответ все еще находится в истории изменений, поэтому вы можете восстановить его оттуда, чтобы опубликовать, когда сможете.   -  person ChrisF    schedule 08.08.2014


Ответы (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).

person HRold    schedule 09.08.2014