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