2013-10-17 1 views
0

필자는 autotools를 사용하는 프로젝트를 포크했고 C++ 11, 적어도 gcc 4.7이 필요한 기능을 추가했습니다.autotools를 사용하여 최소한의 gcc 버전을 강제 실행하는 방법은 무엇입니까?

gcc 버전 4.7 이상을 사용할 수 있는지 확인하기 위해 configure.ac에 추가해야 할 내용은 무엇입니까? 이 요구 사항에 맞는 최소 버전을 사용하거나 시스템 기본 버전이 더 높은 경우 사용하십시오.

답변

1

GCC 옆에 C++ 11을 지원하는 다른 컴파일러가 있는데 왜 GCC의 특정 버전을 테스트 할 수 있습니까?

Autoconf 보관 파일은 사용되는 컴파일러에 관계없이 a macro to require C++11 support입니다.

2

GCC 설치에는 동일한 이름이지만 버전에 이름이 포함 된 실행 파일이 포함됩니다. GCC 버전이 4.7이면 g++ 프로그램 외에도 g++-4.7이 있습니다.

dnl # Check which GCC version is wanted 
AC_ARG_WITH(gcc, 
    [ --with-gcc=<version> Use GCC (gcc and g++) of the specified version], 
    [if test "$withval" != yes; then 
    AC_PROG_CXX([g++-$withval g++ c++]) 
    AC_PROG_CC([gcc-$withval gcc]) 
    elif test "$withval" = yes; then 
    AC_PROG_CXX([g++ c++]) 
    AC_PROG_CC([gcc]) 
    fi]) 

수정 귀하의 요구 사항 :

당신이 알고

은, 다음과 같이 사용할 수 있습니다.

+0

요아킴에게 감사드립니다. AC_ARG_WITH의 문서를 읽었지만 이해가되지 않아 "내 요구 사항을 수정하는"방법을 모르겠습니다. 완전한 예제로 제공해 주시겠습니까, 나는 코멘트가 무엇인지 모릅니다. – lalebarde

+0

@lalebarde 실제로, 그것에 대해 조금 생각한 후에, 특정 컴파일러와 컴파일러 버전을 강요하는 것은 잘못된 방법입니다. 대신 컴파일러가 처리 할 구조를 처리 할 수 ​​있는지 확인해야합니다. 즉, 예를 들어 수표가 있어야합니다. 'nullptr'을 사용하면됩니다. 예 : [이'configure.ac' of my] (https://github.com/pileon/shadow-server/blob/pre-cmake/configure.ac) 예를 들어 보겠습니다. '-std = C++ 11' (및'-std = C++ 0x') 플래그와 기타 플래그를 확인합니다. C++ 11 기능 ('nullptr', 유니 코드 문자열 리터럴 및 원시 문자열 리터럴과 같은). –

관련 문제