Как правильно работать с другим компилятором C++ в проекте CDT?
Я использую Eclipse CDT Mars.2 (и Neon RC) в Linux. Компилятором C++ по умолчанию для моего дистрибутива является GCC 5.3.1, но для некоторых моих работ я использую GCC 4.9.3. Я хотел бы, чтобы все, что касается моего проекта, использовало GCC 4.9.3: обнаружение инструментов, стандартная библиотека C++, пути включаемых файлов, индексатор, предварительная обработка - все это.
Какой правильный способ сделать это? Кажется, в Eclipse есть довольно византийские конфигурации "провайдеров" и "наборов инструментов", и я не хочу делать настройки, которые я не смогу отменить позже...
Примечание: я пытался заменить ${COMMAND}
с /usr/bin/g++-4.9
в некоторых настройках поставщика препроцессора "Включает" и т. д., что привело к обнаружению связанных файлов 4.9.3, но моему индексатору это не понравилось, и все std::stuff были выделены красным и не разрешены. Затем я попытался найти, где я установил версию компилятора, используемую для индексации, но я не смог ее найти.
1 ответ
Есть два возможных ответа, в зависимости от того, выполняете ли вы "Стандартное производство" или "Управляемое производство". Стандартное создание означает, что вы пишете свои собственные файлы Makefile и управляете всем этим самостоятельно. Управляемый Make означает, что вы позволяете CDT создавать Makefiles и управлять ими.
Стандартная марка
Для стандартного изготовления все контролируется тем, что обнаруживает сканер. Сканер обрабатывает поиск всех включенных в систему файлов, которые являются частью вашего проекта, и которые передаются в индексатор для разрешения символов, а также позволяют такие вещи, как навигация по заголовочным файлам.
Чтобы изменить используемый компилятор, вам нужно заменить ${COMMAND}
с вашим выбранным компилятором. Вы (как пользователь) должны убедиться, что эта команда соответствует тому, что вы используете в вашем Makefile.
Чтобы изменить ${COMMAND}
:
- Откройте Свойства проекта (щелкнув правой кнопкой мыши по проекту)
- Выберите C/C++ General -> Preprocessor Включить пути, макросы и т. Д. В дерево.
- Выберите вкладку " Поставщики "
- Выберите настройки встроенного компилятора CDT GCC из списка
- Заменить
${COMMAND}
в Команде, чтобы получить спецификации компилятора: к желаемому исполняемому файлу g ++.
Вот скриншот, чтобы помочь:
Чтобы увидеть это в действии, вот несколько скриншотов с описанными изменениями и без них. На моей машине у меня есть /usr/bin/g++
которая является версией 5.3 и /usr/bin/g++-4.7
которая является версией 4.7.
По умолчанию g ++
С переопределенным g ++ до версии 4
Использование среды управления
Проблема с вышесказанным заключается в том, что вам нужно координировать g ++ между вашим Makefile и настройками сборки. Одним из решений этой проблемы является использование параметров среды сборки C/C++ для определения CXX
в качестве компилятора использовать. Установить CXX
переменная окружения в настройках проекта (Свойства проекта -> Сборка C/C++ -> Среда) или глобальные настройки (Предпочтения -> C/C++ -> Сборка -> Среда).
Затем заменить ${COMMAND}
с ${CXX}
,
Вот скриншот, который демонстрирует то, что я описал:
Удалось сделать
Если вместо этого вы используете Managed Make, вам необходимо переопределить параметры сборки для отдельных инструментов. Эти параметры затем передаются в настройки препроцессора "Включить пути", "Макросы" и т. Д., Которые используются непосредственно "Стандартной маркой".
Чтобы изменить параметры сборки, вам нужно переопределить команду, используемую для компилятора, в нескольких местах, по одному разу для каждого типа инструмента. Запустите в Свойствах проекта -> Сборка C/C++ -> Настройки, а затем отредактируйте каждый из них:
- Компилятор GCC C++ -> Обычно установлен на
g++
- GCC C Compiler -> Обычно установлен на
gcc
- GCC C++ Linker -> Обычно установлен на
g++
Вот скриншот для демонстрации: