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:
- Instale o foxmake, se não já estiver instalado
- Crie o arquivo FoxMakefile com o seguinte conteúdo na raiz do seu projeto:
Se estiver no linux coloque:
Se estiver no windows coloque:output.file.name=executavel
output.file.name=executavel.exe
- Agora execute o seguinte comando no shell:
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.foxmake compile link
- Execute o executável criado:
Se estiver no linux execute:
Se estiver no windows execute:./executavel
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.