Você não pode.
O manual do GCC 4.4.0 é abrangente apenas para essa versão, mas lista todos os avisos possíveis para o 4.4.0. Eles não estão todos na página para a qual você vincula, por exemplo, algumas opções específicas do idioma estão nas páginas de opções C ++ ou Obj-C. Para encontrá-los todos, é melhor consultar o Resumo das opções
Ligar tudo incluiria o -Wdouble-promotionque é relevante apenas em CPUs com uma unidade de ponto flutuante de precisão única de 32 bits que implementa floatem hardware, mas simula doubleem software. Fazendo cálculos como doubleusaria a emulação de software e seria mais lento. Isso é relevante para algumas CPUs incorporadas, mas completamente irrelevante para as modernas CPUs de desktop com suporte de hardware para ponto flutuante de 64 bits.
Outro aviso que geralmente não é útil é -Wtraditional, que alerta sobre códigos perfeitamente formados que têm um significado diferente (ou não funciona) nas "string " "concatenation"definições tradicionais de C, por exemplo , ou ISO C! Você realmente se importa com a compatibilidade com compiladores de 30 anos? Você realmente quer um aviso para escrever int inc(int i) { return i+1; }?
Eu acho que -Weffc++é muito barulhento para ser útil, é baseado na primeira edição desatualizada do Effective C ++ e alerta sobre construções perfeitamente válidas em C ++ (e para as quais as diretrizes foram alteradas nas edições posteriores do livro.) Eu não quero ser avisei que não inicializei um std::stringmembro no meu construtor; ele tem um construtor padrão que faz exatamente o que eu quero, por que devo escrever m_str()para chamá-lo? Os -Weffc++avisos que seriam úteis são muito difíceis para o compilador detectar com precisão (dando falsos negativos) e os que não são úteis, como inicializar explicitamente todos os membros, apenas produzem muito ruído, dando falsos positivos.
Luc Danton forneceu um ótimo exemplo de avisos inúteis, dos -Waggregate-returnquais quase certamente nunca faz sentido para o código C ++.
ou seja, você realmente não deseja todos os avisos, apenas pensa que deseja.
Leia o manual, leia sobre eles, decida qual você deseja ativar e tente. Ler o manual do seu compilador é uma Good Thing TM de qualquer maneira, tomar um atalho e ativar avisos que você não entende não é uma boa idéia, especialmente se for para evitar ter que usar o RTFM.
Quem simplesmente liga tudo provavelmente está fazendo isso porque não tem noção, porque ou um chefe de cabelos pontudos disse "sem avisos".
Alguns avisos são importantes e outros não. Você tem que ser discriminador ou estragar seu programa. Considere, por exemplo -Wdouble-promotion,. Se você estiver trabalhando em um sistema incorporado, poderá querer isso; se você estiver trabalhando em um sistema desktop, provavelmente não. E você quer -Wtraditional? Eu duvido.
Editar: Consulte também -Wall-all para ativar todos os avisos fechados como WONTFIX.
Edit 2: em resposta à reclamação do DevSolar sobre makefiles que precisam usar avisos diferentes dependendo da versão do compilador, se -Wall -Wextranão for adequado, não será difícil usar CFLAGS específicos do compilador e da versão:
compiler_name := $(notdir $(CC))
ifeq ($(compiler_name),gcc)
compiler_version := $(basename $(shell $(CC) -dumpversion))
endif
ifeq ($(compile_name),clang)
compiler_version := $(shell $(CC) --version | awk 'NR==1{print $$3}')
endif
# ...
wflags.gcc.base := -Wall -Wextra
wflags.gcc.4.7 := -Wzero-as-null-pointer-constant
wflags.gcc.4.8 := $(wflags.gcc.4.7)
wflags.clang.base := -Wall -Wextra
wflags.clang.3.2 := -Weverything
CFLAGS += $(wflags.$(compiler_name).base) $(wflags.$(compiler_name).$(compiler_version))