Я использую 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};
Установите переменную окружения в одном из ваших .rc
скрипты:
export CXXFLAGS = "$CXXFLAGS -std=c++14"
это должно повлиять на все звонки make
если переменная явно не установлена в Makefile
снова.
Другой вариант заключается в предоставлении config.mak
файл, который вы можете включить в свой Makefile
s:
Makefile
:include config.mak
# ... rules and actions
config.mak
:CXXFLAGS += "-std=c++14"
Это просто не то, как работают компиляторы и дистрибутив программного обеспечения в дистрибутивах Linux.
Есть много систем сборки, начиная от плановых Makefiles, Autotools, scons, CMake, qmake, waf, Bazel, Buck, Mezon … вы называете это. У каждого из них есть свой метод указания компилятора и его параметров.
Настройки компилятора по умолчанию также влияют на поведение, и эти настройки по умолчанию различны в каждой версии компилятора.
Кроме того, как пользователь или тот, кто «просто» компилирует программное обеспечение, написанное кем-то другим, вы не должны отвергать идею автора о стандарте языка в общем случае. Делать это потенциально опасно.
Однако, если речь идет о вашем собственном программном обеспечении и вашем удобстве, тогда я предлагаю использовать настоящую систему сборки, которая позволяет вам указывать параметры компилятора. а также языковой стандарт во всем мире, из одного места. Вы также устанавливаете другие нестандартные флаги, такие как -Wall
не так ли?