Você pode obter make para imprimir suas variáveis e regras predefinidas banco de dados usando a invocaçãomake -p
Daniele Pallastrelli
Respostas:
210
CPPFLAGSé suposto ser para bandeiras do C P re P rocessor; CXXFLAGSé para sinalizadores para o compilador C ++.
As regras padrão no make (na minha máquina, de qualquer forma) passam CPPFLAGSpara praticamente tudo, CFLAGSsão passadas apenas ao compilar e vincular C e CXXFLAGSsão passadas apenas ao compilar e vincular C ++.
parece uma prática comum que os CFLAGS também sejam aprovados ao compilar C ++?
Baiyan Huang
21
Ha. Entendi! o xé um +girou sobre ela do lado, porque C++FLAGSiria explodir o compilador. ... Posso ter chegado tarde à festa, mas ainda é melhor do que chegar a tempo da festa errada.
22916 Jacksonkr
@BaiyanHuang Eu não pensaria nisso como comum ou não; você encontrará as duas convenções. Você precisa saber o que sua configuração atual está fazendo.
James Moore
1
CPPFLAGSNÃO é para C P lus P lus, mas CXXFLAGS é.
shizhen 20/02/19
Verdadeiro, mas terrível. Parece que estamos presos nos anos 80.
shuhalo 19/09/19
34
Por padrão, CPPFLAGSserá fornecido ao pré-processador C, enquanto CXXFLAGSserá fornecido ao compilador C ++.
Eu estava olhando diretamente para o manual quando tive exatamente a mesma pergunta. Digitei CPPFLAGS no stackoverflow e obtive a resposta muito mais rapidamente do que pesquisar no manual.
11119 Dan Hook
18
CPPFLAGS são para o pré-processador C, enquanto CXXFLAGS são para o compilador C ++.
Na prática, você precisa saber o que cada projeto faz. Praticamente ninguém usa os padrões incorporados no make, e se você confiar, por exemplo, em CPPFLAGS, que significa "sinalizadores para o pré-processador C", você descobrirá que o projeto de seu interesse o usou para significar "sinalizadores para o compilador C ++" em vez de. E o sinalizador CFLAGS é passado para linhas de compilação C ++? As vezes. Nem sempre. Etc, etc, etc.
Alguns projetos usam CPPFLAGS para significar "sinalizadores de c ++", mas esses projetos quase definitivamente o fazem por ignorância do padrão, e seria melhor se eles usassem CXXFLAGS.
Score_Under
@Score_Under Não discordo de você, mas o mundo está cheio de projetos que não se importam menos com o que alguém pensa que é o padrão. Você sempre tem que investigar.
make -p
Respostas:
CPPFLAGS
é suposto ser para bandeiras do C P re P rocessor;CXXFLAGS
é para sinalizadores para o compilador C ++.As regras padrão no make (na minha máquina, de qualquer forma) passam
CPPFLAGS
para praticamente tudo,CFLAGS
são passadas apenas ao compilar e vincular C eCXXFLAGS
são passadas apenas ao compilar e vincular C ++.fonte
x
é um+
girou sobre ela do lado, porqueC++FLAGS
iria explodir o compilador. ... Posso ter chegado tarde à festa, mas ainda é melhor do que chegar a tempo da festa errada.CPPFLAGS
NÃO é para C P lus P lus, masCXXFLAGS
é.Por padrão,
CPPFLAGS
será fornecido ao pré-processador C, enquantoCXXFLAGS
será fornecido ao compilador C ++.O GNU Make Manual é um bom recurso para perguntas como esta (consulte Variáveis implícitas ).
fonte
CPPFLAGS são para o pré-processador C, enquanto CXXFLAGS são para o compilador C ++.
Veja aqui .
fonte
Por padrão, eles estão definidos para algo.
Na prática, você precisa saber o que cada projeto faz. Praticamente ninguém usa os padrões incorporados no make, e se você confiar, por exemplo, em CPPFLAGS, que significa "sinalizadores para o pré-processador C", você descobrirá que o projeto de seu interesse o usou para significar "sinalizadores para o compilador C ++" em vez de. E o sinalizador CFLAGS é passado para linhas de compilação C ++? As vezes. Nem sempre. Etc, etc, etc.
fonte