Primeiro exemplo

Agora, vamos criar um primeiro projeto

Crie um programa para ser compilado e linkado. Então faça o seguinte:

Na raiz do projeto crie o arquivo main.cpp e coloque nele o seguinte conteúdo:

#include <iostream>

using namespace std;

int main() {
    cout "Hello world!" << endl;
    return 0;
}

Depois de criado o programa, seu projeto deve ter a seguinte estrutura:

helloworld
└── main.cpp

Agora faça o seguinte:

  1. Instale o foxmake, se não já estiver instalado
  2. Crie o arquivo FoxMakefile com o seguinte conteúdo na raiz do seu projeto:
    Se estiver no linux coloque:
    output.file.name=executavel
    Se estiver no windows coloque:
    output.file.name=executavel.exe
  3. Agora execute o seguinte comando no shell:
    foxmake compile link
    Você também poderia executar com a tarefa "build" ou "buildall". A tarefa build inclue: clean, compile, link, copy. E a tarefa buildall inclue: clean, compileall, link, copy.
  4. Execute o executável criado:
    Se estiver no linux execute:
    ./executavel
    Se estiver no windows execute:
    executavel.exe

Se tudo ocorreu bem, o seu projeto deve ter agora a seguinte estrutura:

helloworld
├── FoxMakefile
├── executavel
├── __lwtimes.txt
├── main.cpp
└── obj
    └── src
        └── main.o    

Foram criadas duas pastas: build e obj. A pasta obj é para onde foram os arquivos resultantes da compilação (os arquivos objeto). O executável resultante da linkagem, foi para pasta build e, se houvesse uma pasta bin, iria para ela também. Como ela não foi configurada no script, o executável vai para pasta raiz do projeto.

Repare que foi criado também um arquivo __lwtimes.txt. Esse arquivo é um arquivo de propriedades. Onde, as chaves representam os arquivos de código fonte (headers e implementações), e os valores, representam o tempo de última alteração desses arquivos no momento da última compilação.

A cada compilação, o arquivo _lwtimes.txt é atualizado (ou criado, caso não já exista). Na próxima compilação, se não for especificada a tarefa compileall ou outra que também compila todos os arquivos, esse arquivo é verificado para compilar apenas os arquivos modificados após as datas correspondentes gravadas nesse arquivo.

Trata-se de uma compilação inteligente, onde é compilado somente o necessário para diminuir o tempo necessário para compilação do código fonte.

Para baixar o projeto "helloworld" abordado nessa página, acesse:

Download: helloworld.zip.

Recomendação

É recomendável configurar as pastas src e bin para o projeto ficar mais organizado. Para tanto, é só adicionar as propriedades: src.dir=src e bin.dir=bin no arquivo de script: FoxMakefile.

Próxima aula

O próxima aula ensina como criar e configurar as pastas "src" e "bin" para organizar melhor o projeto.