如何使用autotools(automake,configure等)为文件设置构建规则?

时间:2016-11-16 22:29:40

标签: autotools configure automake

我继承了使用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.acMakefile.am但未找到解决方案。

2 个答案:

答案 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_CXXFLAGSCXXFLAGS之间的区别是正确的。