2017-03-05 1 views
0

Ich bin sehr neu zu Autoconf, ich möchte eine Configure-Datei, die, wenn ich rufe: configure --enable-gtest=yes, so dass es ein Compiler-Flag hinzugefügt. Der folgende Code, den ich nach der Suche aufrufe, sieht folgendermaßen aus, funktioniert aber nicht.wie ein Compiler-Flag durch Aktivieren einer Funktion in Autoconf

Vielen Dank

dies ist, wie mein Make-Datei aussieht.

-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 

das ist mein 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 

und meine

Makefile.config.in

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

if DEBUG 
DBG = debug 
else 
DBG = 
endif 

dank

Antwort

1

Ziemlich nah! Aber nicht ganz.

Sie sind wahrscheinlich am besten mit Automake, das viele der Makefile Plackerei für Sie automatisiert. Aber wenn Sie es wirklich vermeiden wollen, dann müssen Sie Ihr Makefile korrekt schreiben, entsprechend dem, was Sie in configure.ac schreiben.

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

Dies definiert ein paar autoconf Substitutionen, wie DEBUG_TRUE und DEBUG_FALSE. Das if Formular, das Sie gewählt haben, funktioniert nur in Automake, in einem gewöhnlichen Makefile Sie so etwas wie schreiben:

@[email protected] when 
@[email protected] 

Alternativ können Sie die Werte der Substitutionen testen mit GNU if Anweisung Make.

Ein anderer Ansatz ist nicht überhaupt zu verwenden, sondern AC_SUBST die Sache, die Sie in Ihrem Makefile.config.in verwenden möchten.

+0

danke, ich habe AC_SUBST verwendet und es hat funktioniert – apramc

Verwandte Themen