gcc
및 clang
에서 포함 디렉토리는 -I
또는 -isystem
을 사용하여 컴파일러로 전달 될 수 있습니다. 꺾쇠 괄호 <>
오히려 따옴표 ""
보다 #include
지침에서 사용하는 경우빌드를 향상 시키십시오 : 포함을 "시스템"으로 표시하는 방법은
의 차이는, isystem
경로는 검색됩니다. 또한 시스템 헤더에 나타날 때 특정 경고가 표시되지 않습니다 (시스템 헤더의 문제를 해결할 수없는 경우도있을 수 있음). (내가 아는 한 다른 사소한 차이가있을 수 있습니다.)
모든 컴파일러가이 개념을 지원하는 것은 아니며, 표준의 일부가 아니라 구현 문제입니다.
cmake
은이 기능을 특별히 지원하며이를 지원하는 컴파일러에서 "올바른 작업을 수행"합니다.
scons
역사적으로 지원하지 않았지만이 문제를 해결할 수있는 방법이 있으며 최근에는 상당히 some support이 내장되어 있습니다.
boost.build
에 bjam
, b2
등가의 기능이 있습니까? 문서 및 예제에서 포함 디렉토리는 <include>path/to/files
을 사용하여 지정되고 lib
또는 exe
대상의 요구 사항으로 전달됩니다. 그러나 <system_include>
또는 이와 유사한 기능을 찾지 못했습니다.
존재하지 않는 경우 어떤 방법으로 해결할 수 있습니까? 일부 프로젝트는 이러한 플래그가 올바르게 사용되지 않는 한 gcc
및 clang
에 경고없이 빌드되지 않습니다.