Как сделать g ++ -std = c ++ 14 опцией по умолчанию

Я использую ubuntu так долго и за несколько дней до того, как я решил перейти на linux mint, На ubuntuУ меня никогда не было проблем при компиляции исходного кода на С ++, написанного для c++14 стандарт. Но на mintстандарт по умолчанию c++98, Я попытался сделать псевдоним следующим образом:

alias g++="g++ -std=c++14

и это работало для небольших программ, которые я вручную компилировал. Однако это не решение для автоматической сборки программного обеспечения с Makefilesтак что я хочу сказать g ++ использовать c++14 в качестве ISO по умолчанию. Спасибо за вашу помощь

Я хочу это для себя, более конкретно, я хочу сделать что-то вроде:

std::vector<int> numbers = {1, 2, 3, 4, 5};

1

Решение

Установите переменную окружения в одном из ваших .rc скрипты:

export CXXFLAGS = "$CXXFLAGS -std=c++14"

это должно повлиять на все звонки make если переменная явно не установлена ​​в Makefile снова.


Другой вариант заключается в предоставлении config.mak файл, который вы можете включить в свой Makefiles:

Makefile:

include config.mak

# ... rules and actions

config.mak:

CXXFLAGS += "-std=c++14"
2

Другие решения

Это просто не то, как работают компиляторы и дистрибутив программного обеспечения в дистрибутивах Linux.

Есть много систем сборки, начиная от плановых Makefiles, Autotools, scons, CMake, qmake, waf, Bazel, Buck, Mezon … вы называете это. У каждого из них есть свой метод указания компилятора и его параметров.

Настройки компилятора по умолчанию также влияют на поведение, и эти настройки по умолчанию различны в каждой версии компилятора.

Кроме того, как пользователь или тот, кто «просто» компилирует программное обеспечение, написанное кем-то другим, вы не должны отвергать идею автора о стандарте языка в общем случае. Делать это потенциально опасно.

Однако, если речь идет о вашем собственном программном обеспечении и вашем удобстве, тогда я предлагаю использовать настоящую систему сборки, которая позволяет вам указывать параметры компилятора. а также языковой стандарт во всем мире, из одного места. Вы также устанавливаете другие нестандартные флаги, такие как -Wallне так ли?

0

По вопросам рекламы [email protected]