我正在尝试使用它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"