2017-03-05 105 views
0

启用功能设置编译器标志是很新的Autoconf的,我想有一个配置文件,当我打电话:configure --enable-gtest=yes,使得它增加了一个编译器标志。下面的代码我搜索后看起来如下,但没有办法。我如何在autoconf的

非常感谢

这就是我的makefile的样子。

-include Makefile.config 

SRC = $(wildcard *.cpp) 
OBJ = $(SRC:.cpp=.o) 

install: $(OBJ) 
    $(CC) $(CXXFLAGS) $(DEBUGFLAG) $(OBJ) -o run 

%.o:%.cpp 
    $(CC) $(CXXFLAGS) $(DEBUGFLAG) -c $< 

clean: 
    rm -f *.o 

这是我configure.ac

AC_INIT([test], [1.7.0]) 

AC_PREREQ([2.59]) 

AC_CONFIG_MACRO_DIR([m4]) 

AC_CHECK_PROGS(CXX, [g++ c++ clang], ":") 
AC_PROG_CXX 
AC_SUBST(CXX) 

AC_ARG_ENABLE([debug], 
[ --enable-debug Turn on debugging], 
[case "${enableval}" in 
    yes) debug=true ;; 
    no) debug=false ;; 
    *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;; 
esac],[debug=false]) 
AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) 


AC_CONFIG_FILES(Makefile.config) 
AC_OUTPUT 

和我

Makefile.config.in

CC = @[email protected] 
CXXFLAGS = -std=c++14 

if DEBUG 
DBG = debug 
else 
DBG = 
endif 

感谢

回答

1

很近!但不完全。

你可能最好关闭用automake,它会自动很多的Makefile苦差事的为您服务。但是如果你真的想避免它,那么你必须根据你在configure.ac中编写的内容正确编写Makefile。

AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) 

这定义了几个的autoconf取代的,像DEBUG_TRUEDEBUG_FALSE。您所选择的if形式只能在Automake的,在你写的东西像一个普通的Makefile:

@[email protected] when 
@[email protected] 

另外,您可以使用测试GNU make的if声明换人的值。

另一种方法是根本不使用AM_CONDITIONAL,而是AC_SUBST你想在你的Makefile.config.in中使用的东西。

+0

感谢,我用AC_SUBST和它的工作 – apramc