Подтвердить что ты не робот

Проверка Autotools на С++ 11

Я использую AX_CXX_COMPILE_STDCXX_0X (можно посмотреть в autoconf-архиве), чтобы проверить возможности С++ 11 компилятора. Он правильно определяет, что требуется -std=c++0x, но не добавляет его в CXXFLAGS. Я взглянул на источник макроса, и он проверяет, но затем восстанавливает предыдущие флаги.

Что мне делать, чтобы установить CXXFLAGS возможность компилировать источник С++ 11?

Просто добавление -std=c++0x в AM_CXXFLAGS не является хорошим решением, потому что я хотел бы взять на себя ответственность за то, что компилятор компилируется в режиме С++ 11 у разработчиков autoconf, а не у меня.

4b9b3361

Ответ 1

То, что вы ищете, уже было сделано как AX_CXX_COMPILE_STDCXX_11, часть autoconf-archive. Он добавит требуемую опцию в среду (ранее через CXXFLAGS, теперь через CXX) и ошибку, если поддержка С++ 11 не доступна.

Ответ 2

В общем, вы можете скомпилировать простой код и установить переменную на основе результатов вашей компиляции

DIALECT="-std=c++14"
echo 'int main() {return 0;}' > ./log.cpp && $CXX -std=c++14 ./log.cpp || $DIALECT="no"

if test $DILAECT = no; then
    AC_MSG_ERROR([c++ compiler does not support c++14])
else
    echo $DILAECT
fi