2017-03-05 1 views
0

저는 Autoconf에 새로 도입되었습니다. 전화 할 때 구성 파일을 갖고 싶습니다. : configure --enable-gtest=yes, 컴파일러 플래그를 추가합니다. 다음 코드는 검색 한 결과 다음과 같이 보이지만 트릭을 수행하지는 않습니다.autoconf에서 기능을 활성화하여 컴파일러 플래그를 설정하는 방법

고마워요.

이것은 내 메이크 파일의 모습입니다.

-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

아주 가까이! 그러나 아주.

당신은 아마도 Makefile을 많이 자동화하는 Automake를 사용하는 것이 가장 좋을 것입니다. 하지만 실제로 그것을 피하고 싶다면 configure.ac에 쓰는 것에 따라 Makefile을 올바르게 작성해야합니다.

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

이것은 DEBUG_TRUEDEBUG_FALSE 같은 autoconf를 대체 몇 가지를 정의합니다.

@[email protected] when 
@[email protected] 

가 다른 방법은 GNU 메이크업의 if 문을 사용하여 대체의 값을 테스트 할 수는 선택한 if 양식은 당신이 뭔가를 작성해야 일반 메이크에서, Automake가 작동합니다.

다른 접근법은 AM_CONDITIONAL을 전혀 사용하지 않고 에서 사용하고자하는 것을 AC_SUBST이라고합니다.

+0

감사합니다. AC_SUBST를 사용하여 효과가있었습니다. – apramc

관련 문제