2012-05-05 2 views
9

나는 C로 작성된 프로그램을 가지고 있으며 Autoconf를 사용합니다. AC_PROG_CC_C99 (configure.ac)을 gcc와 함께 사용하면 -std=gnu99 컴파일러 옵션으로 변환됩니다. 이 프로그램은 다소 엄격하게 C99 표준에 따라 작성되었으며 GNU 확장을 사용하지 않습니다.Autoconf 프로젝트에서 엄격한 C99 적용

컴파일러가이를 적용하기 위해 Autoconf를 어떻게 설정해야합니까?

+2

처럼 뭔가 configure.ac에서 호출하면 찾고자하는 것은'-std = c99 -pedantic'이며,'CFLAGS'에서 끝나야합니다. 아무리 생각해도 잘 모르겠다. ( – Christoph

+0

고마워. 내가 수동으로 추가 할 수 있다고 가정하지만 가능하다면 Autoconf가 그랬 으면 좋겠다. 지원하는지 모르겠다. –

답변

6

보통 컴파일러가 특정 CFLAG를 받아들이는지 확인하는 m4 매크로를 사용합니다.

은 (내가 일반적으로 대신 M4/ax_check_cflags.m4 사용)하여 aclocal.m4의에 다음을 넣어 : 플래그를

# AX_CHECK_CFLAGS(ADDITIONAL-CFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) 
# 
# checks whether the $(CC) compiler accepts the ADDITIONAL-CFLAGS 
# if so, they are added to the CXXFLAGS 
AC_DEFUN([AX_CHECK_CFLAGS], 
[ 
    AC_MSG_CHECKING([whether compiler accepts "$1"]) 
    cat > conftest.c++ << EOF 
    int main(){ 
    return 0; 
    } 
    EOF 
    if $CC $CPPFLAGS $CFLAGS -o conftest.o conftest.c++ [$1] > /dev/null 2>&1 
    then 
    AC_MSG_RESULT([yes]) 
    CFLAGS="${CFLAGS} [$1]" 
    [$2] 
    else 
    AC_MSG_RESULT([no]) 
    [$3] 
    fi 
])dnl AX_CHECK_CFLAGS 

AX_CHECK_CFLAGS([-std=c99 -pedantic])