Primeiro exemplo
Agora, vamos criar um primeiro projeto
Atenção:
Para o foxmake funcionar, é necessário que o g++ esteja acessível no seu sistema operacional. Ou gcc, caso queira compilar arquivos C, necessitando especificar que deseja compilar com gcc, e não, g++.Se estiver no windows, pode instalar o mingw64 através do site:
https://www.mingw-w64.org/
Ou do repositório do mingw-build-binaries: https://github.com/niXman/mingw-builds-binaries/releases
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=executaveloutput.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
Foi criada uma pasta: obj. A pasta obj é para onde foram os arquivos resultantes da compilação (os arquivos objeto). Se houvesse uma pasta bin, o executável linkado iria para ela. 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, bin e build para o projeto ficar mais organizado, como será ensinado na próxima aula.
Próxima aula
O próxima aula ensina como criar e configurar as pastas "src", "bin" e "build" para organizar melhor o projeto.