gcc에서 C ++ 11을 어떻게 활성화합니까?


117

Mac OSX Mountain Lion 에서 http://hpc.sourceforge.net의 gcc 4.8.1을 사용 합니다. 에서 to_string함수 를 사용하는 C ++ 프로그램을 컴파일하려고합니다 <string>. -std=c++11매번 플래그를 사용해야합니다 .

g++ -std=c++11 -o testcode1 code1.cpp

기본적으로이 플래그를 포함하는 방법이 있습니까?


3
Makefile을 사용하여 CXXFLAGS.

개인적으로 나는 이와 같은 플래그를 사용하여 컴파일하기 위해 자동화 서비스를 사용했습니다. Makefile도 좋습니다. 물론 XCode (또는 다른 IDE)도 있습니다.
Dave

Dev-C ++ 및 기타 IDE에는 설정할 수있는 컴파일러 옵션이 있습니다
boctulus

답변:


90

H2CO3가 맞습니다. CXXFLAGS가 -std = c ++ 11로 설정된 메이크 파일을 사용할 수 있습니다. 메이크 파일은 프로그램 컴파일 방법에 대한 지침이있는 간단한 텍스트 파일입니다. Makefile (대문자 M)이라는 새 파일을 만듭니다. 코드를 자동으로 컴파일하려면 터미널에 make 명령을 입력하면 됩니다. make를 설치해야 할 수도 있습니다.

다음은 간단한 것입니다.

CXX=clang++
CXXFLAGS=-g -std=c++11 -Wall -pedantic
BIN=prog

SRC=$(wildcard *.cpp)
OBJ=$(SRC:%.cpp=%.o)

all: $(OBJ)
    $(CXX) -o $(BIN) $^

%.o: %.c
    $(CXX) $@ -c $<

clean:
    rm -f *.o
    rm $(BIN)

모든 .cpp 파일이 makefile과 동일한 디렉토리에 있다고 가정합니다. 그러나 src를 지원하고 디렉토리를 포함하고 빌드하도록 makefile을 쉽게 조정할 수 있습니다.

편집 : 기본 C ++ 컴파일러를 수정했는데 g ++ 버전이 최신이 아닙니다. clang ++에서는이 메이크 파일이 잘 작동합니다.


감사 Silouane 및 @ H2CO3 : 나는 메이크와 함께 작동하도록 배워야한다
Guddu

1
@guddu : 여기 에 다소 완전한 소개처럼 보이는 튜토리얼 이 있습니다. 그런 다음 특수 매크로
Silouane Gerin 2013-06-02

1
표준 Makefile 구문에는 탭 문자가 필요하며, 그렇지 않으면 비밀스럽고 멍청한 오류가 발생합니다. 그래서 설명서에 표시된대로 RECIPEPREFIX와 함께 gmake를 사용 합니다 . 탭 문자는 혐오스러운 것입니다. 절대 사용하지 마십시오.
Parthian Shot

24

앞서 언급했듯이-프로젝트의 경우 Makefile또는 다른 경우에는 다른 플래그도 지정해야하는 프로젝트 구성 문제입니다.

그러나 일반적으로 작성하는 일회성 프로그램은 g++ file.cpp && ./a.out어떻습니까?

글쎄, 난 몇 가지를하는 것이 훨씬처럼 #pragma어쩌면 소스 레벨, 또는에서의 기본 확장에 설정하는 - 말 .cxx이나 .C11또는 무엇이든 기본적으로 트리거를. 그러나 현재로서는 그러한 기능이 없습니다.

그러나 아마도 수동 환경 (예 : 쉘)에서 작업하고 있으므로 별칭을 가질 수 있습니다 .bashrc.

alias g++11="g++ -std=c++0x"

또는 최신 G ++의 경우 (그리고 "진짜 C ++ 11"을 느끼고 싶을 때)

alias g++11="g++ -std=c++11"

당신이 g++C ++ 03을 그렇게 싫어한다면 당신 은 그 자체로 별칭을 가질 수도 있습니다 .)


7

사양 파일을 사용하여 할 수 있다고 생각합니다.

MinGW에서 실행할 수 있습니다.
gcc -dumpspecs> specs를

그것이 말하는 곳

*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT}

당신은 그것을

*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} -std=c++11

그런 다음
/ mingw / lib / gcc / mingw32 / <버전> / ​​specs에 배치합니다.

MinGW 빌드 없이도 똑같이 할 수 있다고 확신합니다. 그래도 사양 파일을 어디에 둘지 확실하지 않습니다.

폴더는 아마도 / gcc / lib / 또는 / gcc /입니다.


1
이 시점에서 기본값은 C ++ 14 인 gcc-6 빌드를 얻는 것이 더 쉽습니다.
Marc Glisse 2015

Linux에서는을 실행하여 위치를 찾을 수 있습니다 strace -f gcc your-sources-here 2>&1 | grep specs. 하나의 (이전) 데비안 시스템에서는 /usr/lib/gcc/i586-linux-gnu/4.9/specs. 이 생성 specs이 질문에 대해 설명하고 마법처럼 작품 (필요 리눅스가 이동하는 SUDO)! 감사.
Adrian W

0

sublime을 사용하는 경우 빌드 시스템을위한 코드로 빌드에 추가하면이 코드가 작동 할 수 있습니다. 자세한 내용은 이 링크 를 사용할 수 있습니다 .

{
    "shell_cmd": "g++ \"${file}\" -std=c++1y -o \"${file_path}/${file_base_name}\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",

    "variants":
    [
        {
            "name": "Run",
            "shell_cmd": "g++ \"${file}\" -std=c++1y -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
        }
    ]
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.