외부 라이브러리에 대한 경고를 무시하는 방법에는 두 가지가 있습니다.외부 라이브러리에 대한 경고를 무시하고 디렉토리를 포함하지 않는 C++ 컴파일러 플래그
첫 번째 방법은 #pragma
을 사용하는 것입니다
#pragma gcc diagnostic ignored "-Wunused-parameter"
두 번째 방법은 컴파일러 플래그에 -isystem/path/to/system/lib
를 추가하는 것입니다. 이 레이블은 해당 경로를 외부 포함 경로로 포함하므로 컴파일러는 포함 경로에서 발생하는 경고를 표시하지 않습니다.
많은 컴파일 대상이있는 대규모 프로젝트가 있는데, 그 중 일부는 제 3 자 라이브러리를 사용하여 제 컴파일러에서 문제를 일으 킵니다. 이유가있어서 #pragma
옵션을 사용할 수 없습니다.
그러나 모든 빌드 대상에 블랭킷 컴파일러 플래그로 -isystem
을 사용하면 불행하게도 그 시스템 라이브러리를 사용하지 않는 다른 빌드 대상에 대해서도 /path/to/system/lib
을 포함시킬 것입니다. 즉, 다른 대상이 해당 외부 라이브러리를 검색하므로 바람직하지 않습니다.
담요 방식으로 추가 할 수 있습니다 -isystem
유사한 컴파일러 옵션은 어떤 는 검색 경로에 추가 할 수 있지만 경로가 이미 검색 경로에 포함되는 일 경우에만 경고를 제외하지 않고 있습니까?
저는 조직의 기존 코드베이스를 사용하고 있으며, 고급 코드 검토자를 따라야합니다. 수석 검토자는 pragma 솔루션을 사용할 수 없다고 지정합니다. – Anton
필자는 관련 타겟에 대해서만'-isystem'을 올바르게 설정하기 위해 약간의 치밀한 CMake 마법을 사용할 수 있지만, 필자가 필요로하는 플래그를 갖는 것보다 시간이 오래 걸릴 수 있습니다. 나는 거의 같은 fakedly CMake 마술을하는 것으로 끝났으므로 그런 깃발이 없다면 괜찮을 것이다 ... – Anton