我继承了使用autotools构建的代码,但我总是使用CMake。一些C ++源代码使用C ++ 11和C ++ 14标准。但是,当我跑
时CXXFLAGS="$CXXFLAGS -std=c++14" ./configure
make
只使用-std=c++14
标志构建了一些C ++源文件。如果这是一个简单的Makefile,我注意到foo.cc
没有用正确的标志构建,我可能会改变
foo.o: foo.cc foo.h
$(CXX) -c foo.c
到
foo.o: foo.cc foo.h
$(CXX) $(CXXFLAGS) -c foo.c
autotools中是否有类似的功能?我已经检查了configure.ac
和Makefile.am
但未找到解决方案。
答案 0 :(得分:1)
你正在做什么,在调用configure时设置CXXFLAGS
应该有效。但是,Makefile.am作者通常会在makefile中设置CXXFLAGS
,这会覆盖您的设置,而不是设置AM_CXXFLAGS
。这可能是这种情况。
在任何情况下,如果您的程序需要C ++ 14,那么您应该检查AX_CXX_COMPILE_STDCXX([14])
宏,并将其放在configure.ac中,而不是设置标志。
答案 1 :(得分:0)
如果已经使用另一个CXXFLAGS
定义了-std=...
,则需要以这种方式执行配置脚本:
./configure CXXFLAGS=" -std=c++14"
请注意,@ ptomato对AM_CXXFLAGS
和CXXFLAGS
之间的区别是正确的。