Como posso ter certeza de que meu código está compilando com -o3 no gnu make?


0

Eu tenho um enorme Makefile com o qual estou trabalhando e tentando diminuir. No momento, ele está pronto para construir vários programas diferentes com muitas opções que nunca usarei. Minha esperança é, primeiro, garantir que o código construa o caminho certo e depois cortar partes que não preciso.

Primeiro, quero ter certeza de que meu código está compilando com -o3 (muitas otimizações), mas não tenho certeza de que seja. Eu vejo um pedaço do Makefile que diz:

ifeq ($(findstring $(CFLAGS),-O),)
    CFLAGS_COMMON += -O3
    # only add -O3 if no -O flag is in $(CFLAGS)
endif

que fornece algum consolo ... mas não tem que haver um -O bandeira no lugar para compilar a todos, negando a declaração if?

Aqui está o Makefile inteiro: http://textuploader.com/bj98


!) Essa opção usa um 'O' maiúsculo. 2) Ver stackoverflow.com/questions/5820303/… e modo verboso em elinux.org/Debugging_Makefiles
sawdust

Respostas:


1
LDFLAGS            ?=
CFLAGS             ?=
CXXFLAGS           ?=
CPPFLAGS           ?=
LIBS               ?=
RADIANT_ABOUTMSG   ?= Custom build

Eu adicionaria -O3 para CPPFLAGS, CXXFLAGS e CFLAGS. MAS:

Isso só irá alterar o código dos arquivos alterados do seu projeto. Para ter certeza de que todos os seus arquivos são recompilados, faça um make clean primeiro. MAS:

Isso não garante arquivos vinculados externamente, como bibliotecas. Aqueles geralmente são não compilado com -O3. Se você quiser assegurar que eles estão, você terá que recompilar todas as bibliotecas também (não esquecendo de mudar todos os seus Makefiles!). E. Se esses arquivos dependerem de outras bibliotecas (provavelmente eles são), você também terá que recompilá-los.


Se isso foi útil, por favor, não se esqueça de marcar a resposta como aceita (clique no 'V' à esquerda da resposta) e / ou vote a favor da resposta (clique na seta para cima). Desta forma, outros podem encontrá-lo mais facilmente! Obrigado.
jcoppens
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.