Добавить постоянную опцию компилятора в g ++

2428
milan-j

Я использую g ++ 4.7 в Ubuntu 12.04 для компиляции своего кода на c ++, и он не будет скомпилирован, если в мою команду не добавлена ​​опция -std = gnu ++ 11, например:

g++ -std=gnu++11 main.cpp 

Есть ли способ добавить эту опцию навсегда в компилятор, потому что мой текстовый редактор использует g ++ для автоматической компиляции моего кода, и это не сработает, потому что мне нужно добавить эту опцию, и я не могу добавить ее, как это обычно делается внутри терминала?

Я видел, что люди используют какой-то spec-файл для настройки g ++, но я не понимаю, как это сделать, поэтому помощь от вас, ребята, будет оценена.

2
Спец файл? Это может быть [`make`] (https://en.wikipedia.org/wiki/Make_%28software%29) с [makefile] (https://en.wikipedia.org/wiki/Make_%28software%29 #Makefiles). Makefile - ужасно запутанная вещь, которую я не буду притворяться, что понимаю, хотя некоторые люди так или иначе понимают. Bob 11 лет назад 0
@Bob: Makefile - довольно простая вещь, которую легко понять, когда вы поймете, что она функциональная, а не процедурная. Это также очень полезно в любом развитии. Я написал [учебник] (http://wiki.osdev.org/Makefile) о нем, который может быть полезным для вас ... DevSolar 11 лет назад 0
@DevSolar Да, я там шутил. Лично у меня никогда не было причин узнавать о них (IDE!: D), но люди, которые беспокоятся, вероятно, могут поднять это довольно быстро. Bob 11 лет назад 0
Обратите внимание, что spec-файл и Makefile практически не связаны между собой: в то время как первый - это файл конфигурации компилятора, который обычно поставляется вместе с вашим компилятором, второй - это файл инструкции по сборке, поставляемый с вашим проектом. Для последнего обычно достаточно экспортировать `export CXXFLAGS = -std = gnu ++ 11`, но я считаю, что этот вопрос не под рукой. MvG 11 лет назад 1

1 ответ на вопрос

1
MvG

Я бы просто создал скрипт оболочки, ~/bin/g++содержащий строки

#!/bin/sh exec /usr/bin/g++ -std=gnu++11 "$@" 

и убедитесь, что он ~/binнаходится в PATHсписке и указан там перед любым другим каталогом, который содержит g++исполняемый файл (обычно тот /usr/bin). Редактирование файлов спецификаций возможно, но для того, чтобы ваши настройки стали настройками по умолчанию, я полагаю, вам придется изменить спецификации по умолчанию, а это означает, что для этого потребуются права root-доступа и серьезная работа с внутренними компонентами gcc. Существует большая вероятность того, что эта обработка будет отменена при следующем обновлении g ++.

Это также требует, чтобы `~ / bin` сначала находился в` $ PATH`, по крайней мере, перед каталогом, где живет настоящий g ++. Вместо этого я бы предложил `alias g ++ = 'g ++ --std = gnu ++ 11'`. ott-- 11 лет назад 5
@ott, псевдоним подходит для использования в интерактивной командной строке, но обычно не влияет на команду, вызываемую некоторым редактором, как того требует OP. MvG 11 лет назад 0
Хорошо, из редактора сценарий - правильный путь. ott-- 11 лет назад 0
Как правильно заметил @ott, твой режиссер должен идти раньше установленных. Отредактировал вопрос. Также обратите внимание, что `~` в моем ответе относится к вашему домашнему каталогу, поэтому вы должны написать `export PATH = $ / bin: $ `. Поместить личные вещи в `/ bin` - плохая идея, и для этого должен требоваться доступ с правами суперпользователя, который в моем ответе считается ненужным. MvG 11 лет назад 0

Похожие вопросы