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

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

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



답변

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 ++에서는이 메이크 파일이 잘 작동합니다.


답변

앞서 언급했듯이-프로젝트의 경우 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을 그렇게 싫어한다면 당신 은 그 자체로 별칭을 가질 수도 있습니다 .)


답변

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

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 /입니다.


답변

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}\""
        }
    ]
}


답변