Página seguinte Página anterior Índice geral

### 9. Definições de Construção

O diálogo de Opções do Projecto, acedido a partir do menu projecto, permite-lhe especificar todos os parâmetros necessários para o seu projecto. Eles serão utilizados pelos Makefile.am's e o script configure.in (por ex. alteração de número de versão ou avisos do compilador) e assim definem também as preferências de compilação. Após alterar as opções do projecto, deverá invocar "make clean" ou "reconstruir tudo" para compilar o seu projecto com as novas opções. Por favor lembre-se que depurar apenas está disponível se as opções do projecto estão definidas para gerar informação de depuração, a quantidade pode ser definida com o nível de depuração (0-3). Se adicionar funções que pertençam a uma biblioteca que não esteja incluida nas parâmetros do linker, o seu programa não será correctamente linkado se essas opções não forem actualizadas, por isso tenha atenção às linkagens de bibliotecas.

Para uma construção de distribuição das suas aplicações ou para distribuir um pacote com o código fonte, deverá observar as seguintes definições standard:

- desactivar a depuração
- activar optimização e definir o nível de optimização para -02
- definir os avisos do compilador para -Wall
- por cada nova distribuição, aumentar o número da versão e actualizar o ficheiro projecto.lsm segundo a versão e os requerimentos.

### 9.1 Opções Gerais

A primeira página do diálogo de Opções do Projecto define as opções gerais para o seu projecto. Estas são o nome e número do projecto, o ficheiro sgml de manual que será utilizado para gerar um conjunto de ficheiros HTML que serão incluidos no projecto e informação específica sobre o autor. O campo para breve descrição é para informação adicional que deseje incluir tal como o objectivo do programa e outras similares.

### 9.2 Opções de Compilador

A página de opções do compilador define os parâmetros do compilador em relação ao seu alvo, depuração e outras.

#### Alvo

A caixa de alvo contém três opções que podem ser definidas:

Máquina Alvo: Tem a possibilidade de definir a máquina alvo escolhendo entre a sua máquina (defeito) e i386v, que é a opção se tiver definido o seu compilador como sendo compilador-cruzado para uma máquina Intel 386-compatível correndo System V. Esta opção define o parâmetro -b para o compilador. Normalmente deixaria isto como sendo o defeito.

apenas verificação de sintaxe: Se activo, o parâmetro -fsyntax-only é definido. Isto significa que o compilador irá verificar o seu código apenas por correcção no que toca à sintaxe, mas não verifica mais nada para além disso.

Optimizar: Pode activar optimização para o seu processo de construção através desta opção, o que significa que é definido o parâmetro -O. Se inactivo, o parâmetro é definido para -O0, pelo que nenhuma optimização será utilizada. Se activar optimização seleccionando esta opção, pode também especificar o nível de optimização entre 1 e 3.

Para uma versão de distribuição da sua aplicação, active a optimização e defina o nível para 2.

#### Depuração

À direita da caixa de Alvo, pode ver a secção de Depuração. Isto significa que você pode definir o seu compilador para incluir informação para depuradores dentro do binário final, para que o programador possa seguir a execução da aplicação com o depurador em contexto directo com o código fonte.

Activar a defpuração assim define o parâmetro -g; o nível de depuração especifica a quantidade de informação a ser incluida no binário. Disponíveis estão os níveis 1 até 3 para escolher. Lembre-se que a execução do binário será mais lenta se definir quaisquer opções de depuração e que o tamanho do binário será tanto maior quanto o nível de depuração.

Gerar informação extra para o gprof: define o parâmetro -pg, resultando em que o compilador irá incluir informação para o programa gprof que apresenta gráficos de chamadas das funções do seu programa.

Guardar ficheiros temporários intermédios: define o parâmetro -save-temps. Isto irá resultar no armazenamento dos normais ficheiros temporários produzidos pelo preprocessador e o assemblador. A compilação de um ficheiro de código irá assim produzir três ficheiros finais: um ficheiro *.o que é o resultado final do compilador, um ficheiro *.i produzido pelo preprocessador e um ficheiro *.s que é o resultado final do assemblador.

Para a distribuição do seu projecto, desactive a depuração.

#### Opções Adicionais

O campo de entrada de texto em baixo destina-se a que introduza manualmente quaisquer parâmetros para o compilador definindo as variáveis de ambiente CXXFLAGS nos makefiles, para que o make defina os parâmetros antes do processo de construção e os desligue depois. Para uma descrição completa de todos os parâmetros de compilador disponíveis deverá ler a documentação do seu compilador; para o gcc e egcs isto pode ser feito através de man gcc; man g++ irá mostrar-lhe informação sobre o script c++ que é utilizado para coordenar o compilador.

### 9.3 Avisos de Compilador

De seguida iremos ver uma descrição sobre as opções de avisos do compilador que podem ser definidas na página 3 do diálogo de opções do projecto. As explicações foram tiradas da página do manual para o GCC, egcs versão 1.1.1. Os avisos em si são mensagens de diagnóstico que indicam construções que podem causar erros.

-Wall

  Opções `-W' standard combinadas.

-W

  Compilar com -W. Esta opção define opções não incluidas no -Wall que são muito específicas. Por favor leia a informação GCC para mais informações.

-Wtraditional

  Avisa sobre algumas construções que se comportam de forma diferente no C tradicional e ANSI.

-Wundef

  Avisa de um identificador não definido é avaliado numa directiva `#if'.

-Wshadow

  Avisa sempre que uma variável local encobre outra variável local.

-Wid-clash-LEN

  Avisa sempre que dois identificadores distintos coincidem nos primeiros len caracteres. Isto pode ajudá-lo a preparar um programa que irá compilar com alguns compiladores obsoletos e com lesões cerebrais.

-Wlarger-then-LEN

  Avisa sempre que um objecto maior que LEN bytes é definido.

-Wpointer-arith

  Avisa sobre tudo o que dependa do «size of» de um tipo de função ou de void. O GNU C atribui a estes tipos um tamanho de 1, por conveniencia nos cálculos com ponteiros void * e ponteiros para funções.

-Wbad-function-cast

  Avisa sempre que uma chamada a uma função é feita para um tipo não coincidente. Por exemplo, avisa se `int malloc()` é feito sobre `qualquer_coisa *.`

-Wcast-equal

  Avisa sempre que um ponteiro for feito de forma a remover um qualificador de tipo do tipo do alvo. Por exemplo, avisa se um const char * é feito sobre um char * normal.

-Wcast-align

  Avisa sempre que um ponteiro é feito de tal modo que o alinhamento requerido do alvo é aumentado. Por exemplo, avisa se um char * é feito sobre um int * em máquinas em que inteiros apenas podem ser acedidos em fronteiras de dois ou quatro byte.

-Wwrite-strings

  Dá às constantes string o tipo const char[tamanho] de forma a que copiar o endereço de uma para um ponteiro char * não-const dará um aviso. Estes avisos ajuda-lo-ão a encontrar na hora da compilação código que pode tentar escrever numa constante string, Mas apenas se você tiver sido muito cuidadoso na utilização de const em declarações e protótipos. Caso contrário, será apenas uma nuisance; é por esta razão que não fizemos o `-Wall' pedir estes avisos.

-Wconversion

  Avisa se um protótipo causar uma conversão de tipo que é diferente da que aconteceria ao mesmo argumento na ausência de um protótipo. Isto inclui conversões de virgula fixa para flutuante e vice versa, e conversões que alteram o tamanho ou signedness (poder ser negativo ou ser sempre valor absoluto) de um argumento de vírgula fixa excepto quando é o mesmo que a promoção por defeito.

-Wsign-compare

  Avisa quando uma comparação entre valores signed e unsigned pode produzir um resultado incorrecto quando o valor signed é convertido para unsigned.

-Waggregate-return

  Avisa se qualquer função retornar estruturas ou uniões definidas ou chamadas. (Em linguagens em que pode retornar uma matriz (array), isto também levanta um aviso.)

-Wmissing-prototypes

  Avisa se uma função global é definida sem a prévia declaração de protótipo. Este aviso é levantado mesmo se a definição em si disponibiliza um protótipo. O objectivo é detectar funções globais que não são declaradas em ficheiros header.

-Wmissing-declarations

  Avisa se uma função global é definida sem a declaração prévia. Faz isto mesmo se a definição em si disponibiliza um protótipo. Utilize esta opção para detectar funções globais que não são declaradas em ficheiros header.

-Wredundant-decls

  Avisa se algo for declarado mais de uma vez no mesmo âmbito, mesmo em casos em que a declaração múltipla é válida e não altera nada.

-Wnested-externs

  Avisa se uma declaração externa é encontrada dentro de uma função.

-Winline

  Avisa se uma função não pode ser inlined, e ou foi declarada como inline, ou então a opção -fin*line-functions foi dada.

-Wold-style-cast

  Avisa se uma chamada (cast) de tipo antigo (C-style) é utilizada dentro do programa

-Woverloaded-virtual

  (apenas C++.) Numa classe derivada, as definições de funções virtuais têm de coincidir com o tipo de signature de uma função virtual declarada na classe base. Utilize esta opção para pedir avisos quando uma classe derivada declara uma função que possa ser uma tentativa errada para definir uma função virtual: isto é, avisa quando uma função com o mesmo nome que uma função virtual na classe base, mas com um tipo de signature que não coincide com o de nenhuma função virtual da classe base.

-Wsynth

  Avisa quando o comportamento de síntese do g++ não coincide com o do cfront.

torna todos os avisos em erros

  (-Werror) Trata os avisos como erros; aborta a compilação após quaisquer avisos.

Para uma distribuição do seu projecto, é recomendado que active -Wall.

### 9.4 Opções de Linkagem

As Opções de Linkagem para o seu actual projecto podem ser definidas na última página do diálogo de opções do projecto. Tem de activar as bibliotecas que a sua aplicação utiliza para as ligar ao seu binário com o linkador, por ex. a sua aplicação utiliza a classe KFileDialog. Como a classe KFileDialog é parte da biblioteca KFile, tem de activar kfile. Para classes ou funções que não são listadas nas caixas de escolha, utilize o campo "bibliotecas adicionais".

#### Parâmetros do Linkador

remove toda a tabela de símbolos e informação de realocação do executável:

  isto significa que toda a informação redundante será removida dos ficheiros de objecto e do binário, resultando em que a depuração não será possível. Durante o tempo em que a sua aplicação estiver em fase de desenvolvimento e não em distribuição final, deve deixar esta opção desactivada.

impedir a utilização de bibliotecas partilhadas:

  Esta opção desactiva a utilização de bibliotecas partilhadas em sistemas que suportem isto. Em sistemas que não utilizem bibliotecas partilhadas, esta opção não terá qualquer efeito.

parâmetros adicionais:

  Aqui, você poderá introduzir parâmetros adicionais para o linkador, definindo a variável de ambiente LDFLAGS através do make. As opções disponíveis podem ser tiradas da página de manual para ld ou a página de manual do seu compilador.

#### Bibliotecas

A secção de bibliotecas contém caixas de selecção para as bibliotecas mais utilizadas em conjunto com o desenvolvimento de aplicações Qt/KDE. Tem de activar as bibliotecas que a sua aplicação utiliza, caso contrário o linkador irá queixar-se sobre tabelas de símbolos não resolvidas.

X11

  A biblioteca X11. Recomendada para todos os programas X-Window.

Xext

  A biblioteca de extenções X11. Também a maioria dos programas X-Window depende da Xext.

qt

  A biblioteca Qt. Recomendada para aplicações Qt e KDE.

kdecore

  A biblioteca KDE Core; contém as classes para o esqueleto de aplicações KDE.

kdeui

  A biblioteca de interface de utilizador KDE; contém widgets específicos KDE.

khtmlw

  A biblioteca de Widget KHTML.

kfm

  A biblioteca KFM contendo classes para funções KFM.

kfile

  A biblioteca KFile. Contém diálogos de ficheiros etc.

kspell

  A biblioteca KSpell. Contém um interface para programas utilizarem o ISpell para verificação ortográfica.

kab

  A biblioteca KAdressBook. Necessária para acesso ao livro de endereços bem como para disponibilizar o widget de livro de endereços

additional libraries: Here you can enter additional libraries that your application needs, e.g. the KOM library. Set the libraries with the -l option; for the example -lkom.

#### Make

Como o make GNU suporta algumas opções úteis, o diálogo de Opções do Projecto contém uma página chamada "Opções Make", onde essas podem ser (des)activadas. As definições disponíveis são:

Imprimir informação de depuração

  imprime toda a informação sobre ficheiros do projecto e o que o make determina para os reconstruir.

Continuar após erros

  tenta continuar com a compilação após um erro ocorrer (por ex. um ficheiro não conseguiu ser compilado devido a um erro)

Imprimir a base de dados

  imprime a base de dados make para o processo actual que contém as modificações desde a última execução de construção.

Variáveis de ambiente

  dão as variáveis de ambiente actuais uma prioridade mais elevada que as variáveis a utilizar nos ficheiros Makefiles.

Não utiliza regras inclusas

  não utiliza as regras inclusas para o make.

Tocar ficheiros

  não corre o compilador sobre ficheiros modificados; em vez disso apenas os toca. Isto define-os como já processados pelo make.

Ignorar todos os erros

  Ignora todos os erros que possam ocorrer

Operação silenciosa

  não imprime qualquer informação sobre o processo de construção

Imprime o directório de trabalho

  imprime o directório actual durante o processo do make.

Número do trabalho

  define o número de processos paralelos para o make. Para um sistema de CPU único nós recomendamos definir este parâmetro para um ou dois.

Definir modificado

  define o ficheiro seleccionado como modificado. Escolha o ficheiro clicando sobre o botão de pasta à direita. Definir um ficheiro como modificado significa que esse ficheiro será processado pelo make e compilado se for um ficheiro de código fonte.

Opções adicionais

  define opções adicionais para o make; estas podem ser encontradas na sua página de manual local para o "Make GNU".

Página seguinte Página anterior Índice geral