2016-11-24 7 views
0

gccclang에서 포함 디렉토리는 -I 또는 -isystem을 사용하여 컴파일러로 전달 될 수 있습니다. 꺾쇠 괄호 <> 오히려 따옴표 ""보다 #include 지침에서 사용하는 경우빌드를 향상 시키십시오 : 포함을 "시스템"으로 표시하는 방법은

의 차이는, isystem 경로는 검색됩니다. 또한 시스템 헤더에 나타날 때 특정 경고가 표시되지 않습니다 (시스템 헤더의 문제를 해결할 수없는 경우도있을 수 있음). (내가 아는 한 다른 사소한 차이가있을 수 있습니다.)

모든 컴파일러가이 개념을 지원하는 것은 아니며, 표준의 일부가 아니라 구현 문제입니다.

cmake은이 기능을 특별히 지원하며이를 지원하는 컴파일러에서 "올바른 작업을 수행"합니다.

scons 역사적으로 지원하지 않았지만이 문제를 해결할 수있는 방법이 있으며 최근에는 상당히 some support이 내장되어 있습니다.

boost.buildbjam, b2 등가의 기능이 있습니까? 문서 및 예제에서 포함 디렉토리는 <include>path/to/files을 사용하여 지정되고 lib 또는 exe 대상의 요구 사항으로 전달됩니다. 그러나 <system_include> 또는 이와 유사한 기능을 찾지 못했습니다.

존재하지 않는 경우 어떤 방법으로 해결할 수 있습니까? 일부 프로젝트는 이러한 플래그가 올바르게 사용되지 않는 한 gccclang에 경고없이 빌드되지 않습니다.

답변

1

아니요, boost.build에는 이러한 기능이 없습니다. 대신 지원 시스템을 포함하는 특정 도구 세트에 대해 조건부로 -isystem을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

exe myexe : mysrc.cpp : <toolset>gcc:<cxxflags>-isystem/path/to/include/files ;