GNU Make에서 CPPFLAGS와 CXXFLAGS의 차이점


139

GNU Make에서 CPPFLAGS와 CXXFLAGS의 차이점은 무엇입니까?


2
호출을 사용하여 사전 정의 된 변수 및 규칙 데이터베이스를 인쇄 할 수 있습니다.make -p
Daniele Pallastrelli

답변:


210

CPPFLAGS에 대한 플래그에 대한 있어야하는데 C PP의 rocessor; CXXFLAGSC ++ 컴파일러 용 플래그입니다.

make (기본적으로 내 컴퓨터에서)의 모든 기본 규칙은 CPPFLAGS거의 모든 것에 CFLAGS전달되며 C를 컴파일하고 연결할 CXXFLAGS때만 전달되며 C ++를 컴파일하고 연결할 때만 전달됩니다.


1
C ++을 컴파일 할 때 CFLAGS가 전달되는 일반적인 관행처럼 보입니다.
Baiyan Huang

21
하아. 알 겠어요! 는 xA는 +때문에 그것의 측면 켜져 C++FLAGS컴파일러를 날려 버릴 것입니다. ... 나는 파티에 늦게 도착했을 수도 있지만, 그것은 잘못된 파티에 정시에 도착하는 것보다 낫습니다.
Jacksonkr

@BaiyanHuang 나는 그것을 일반적인 것으로 생각하지 않을 것입니다. 두 규칙을 모두 준수하게됩니다. 현재 설정이 무엇인지 알아야합니다.
James Moore

1
CPPFLAGS이다 NOT 을위한 C P LU가 P의 LU가 있지만 CXXFLAGS 입니다.
shizhen

진실하지만 끔찍한. 우리가 80 년대에 갇힌 것처럼 느껴집니다.
shuhalo

34

기본적으로 CPPFLAGSC 프리 프로세서에 CXXFLAGS제공되고 C ++ 컴파일러에 제공됩니다.

GNU는 수동 확인 이 같은 질문 (참조를위한 좋은 자원입니다 암시 적 변수 ).


27
나는이 똑같은 질문을 받았을 때 매뉴얼을 똑바로 쳐다보고있었습니다. CPPFLAGS를 stackoverflow에 입력하고 매뉴얼을 검색하는 것보다 훨씬 빠른 답변을 얻었습니다.
Dan Hook


0

기본적으로 무언가로 설정되어 있습니다.

실제로 모든 단일 프로젝트의 기능을 알아야합니다. 사실상 기본적으로 make에 내장 된 기본값을 사용하지 않으며, 예를 들어 "C 프리 프로세서에 대한 플래그"를 의미하는 CPPFLAGS에 의존하는 경우 관심있는 프로젝트가 "C ++ 컴파일러에 대한 플래그"를 의미하는 것으로 사용됩니다. 대신에. 그리고 CFLAGS 플래그는 C ++ 컴파일 라인으로 전달됩니까? 때때로. 항상 그런 것은 아닙니다. 등


1
일부 프로젝트는 CPPFLAGS를 사용하여 "c ++ 플래그"를 의미하지만 해당 프로젝트는 표준을 무시하고 거의 확실하게 수행하며 CXXFLAGS를 사용하는 것이 좋습니다.
Score_Under

@Score_Under 난 당신과 동의하지 않지만, 세상 사람들은 표준이 생각하는 것을 덜 신경 쓰지 않는 프로젝트들로 가득 차 있습니다. 당신은 항상 조사해야합니다.
James Moore
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.