2017-03-05 40 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