TL; DR : 나는의 헤더를 포함 할 때 나는 내 자신의 코드를 컴파일하는 데 사용되는 플래그에 의해 트리거 경고를 처리 할 수있는 방법 플래그의 특정 세트와 외부 라이브러리를 컴파일 할 때 이 도서관?특정 컴파일 플래그
나는 프로젝트의 빌드 시스템으로 autotools를 사용하고 난 대상에 따라 적절하게 컴파일 플래그를 설정하고 싶습니다.
내가 경고의 어떻게 든 높은 수준의 내 자신의 소스를 컴파일하고 싶은(/ 디버깅 컴파일러에서 도움을 버그를 방지는 항상 환영합니다). 현재 사용되는 경고 플래그에는 예를 들어 -Wsuggest-override
이 있습니다. 내 소스 외에 내가 가진
나는 이제의 정보 페이지에서 두 개의 별도의 플래그 세트, 을 가지고 -Ofast
가정 해 봅시다, 컴파일하고자하는 외부 라이브러리 (당신이 정말로 알고 싶다면 pugixml
) automake
구체적인 예가 담긴 흥미로운 섹션이 있습니다 Per-Object Flags: How to simulate per-object flags?.
__top_srcdir__we_SOURCES = main.cc
: 프로그램 소스의
__top_srcdir__bin_LDADD = libpugixml.a
noinst_LIBRARIES = libpugixml.a
libpugixml_a_SOURCES = pugixml/pugixml.cpp
libpugixml_a_CPPFLAGS = -Ofast
세트가 더 이상 라이브러리 소스를 포함 : 내 Makefile.am
에 다음 없다가 왜 입니다
(또한 주제에 대한 몇 가지 SO 질문이 있습니다)
이 작업은 정상적으로 작동합니다. 라이브러리는 플래그 세트로 빌드되고 다른 소스와 함께 소스 코드는 모두 정상입니다 ...
까지 내 소스에서 라이브러리의 헤더와 그 내가 이것을 게시하도록하겠습니다 왜 질문
는 main.cc (너무 오래는?) : 컴파일하는 동안
#include <pugixml/pugixml.hpp> // -Wsuggest-override triggered
int main() { return 0; }
의 -Wsuggest-override
라이브러리 소스
공식 automake
솔루션이 경우에는 적용되지 아니 경고의 다른 세트를합니까 아니면 내가 뭔가 잘못하고있는 중이 야?
automake
버전 (기분에 따라) 나는 그것이 중요한 경우 확실하지 오전하지만 난 g++
및/또는 clang
을 사용하고 있습니다 : 당신의 도움에 대한 1.15
감사 automake를 (GNU의 automake를)
+1, 답변 해 주셔서 감사합니다.나는 automake에게 말할 방법이 없는지 궁금 해서요. "이 헤더는이 라이브러리에 속해 있으므로 포함되어 있다면 적절한 플래그를 사용하십시오." – Zermingore
OK, 지금 당신이 얻고있는 것을 봅니다. 불행히도 대답은 '아니다. automake'는 그렇게 할 수 없다. – ldav1s