
Я пытаюсь использовать autoconf
для создания configure
скрипта. Однако некоторые заголовки, которые я хочу проверить, требуют дополнительных флагов компилятора (например c++11
). Я могу частично получить ответздесьгде соответствующие строки в configure.ac
файле выглядят следующим образом.
AX_CXX_COMPILE_STDCXX_11(,[mandatory])
AC_CHECK_HEADER("CL/cl2.hpp")
но std=gnu++11
флаг не передается на этап предварительной обработки, AC_CHECK_HEADERS
где я получаю странный результат, когда он пригоден для использования, но отсутствует:
checking CL/cl2.hpp usability... yes
checking CL/cl2.hpp presence... no
Глядя на config.log
шоу, можно увидеть следующие строки:
configure:3423: checking CL/cl2.hpp presence
configure:3423: g++ -E conftest.cpp
In file included from conftest.cpp:19:0
/usr/include/CL/cl2.hpp:442:2: error #error Visual studio 2013 or another C++11-supported compiler required
где я ясно вижу, что флаг C++ не используется. Как мне сделать так, чтобы флаги компилятора использовались в этих шагах препроцессора?
РЕДАКТИРОВАТЬ
Я могу обойти это вручную, настроив параметры CXXCPP
вручную при запуске configure
, но я бы хотел, чтобы конечный пользователь не знал об этом.
./configure CXXCPP="g++ -E -std=gnu++11"
решение1
Текущее решение, которое я придумал, — вручную добавить:
CXXCPP="g++ -E -std=gnu++11"
прямо в configure.ac
файл. Буду рад услышать любые дополнительные ответы.
решение2
Мне пришлось запустить конфигурацию следующим образом:
./configure CCFLAGS="-std=c++11" CXXFLAGS="-std=c++11" CXXCPP="-std=c++11"