# Dependência

Caloni, 2009-05-01 <quotes> <self> <now> [up] [copy]
Com o desaparecimento da dependência não há mais medo de perdas.
Tolle, Eckhart (O Poder do Agora, 1997)

# Meu roteiro C++

Caloni, 2009-05-20 <computer> <archive> [up] [copy]

Como não consigo mais ter ideias para artigos, resolvi catalogar todas as coisas que já falei nesse blogue e, o mais importante, todas as coisas que ainda não falei nesse blogue (e espero um dia falar ou talvez nunca fale), começando por C++, que era o intuito original (só que não é mais, porque eu uso mais a Win32 API que a STL):

C++

História:

Conceitos:

Linguagem:

Biblioteca:

Dicas:

Espero que isso me ajude a continuar completando as lacunas do saite. Se não der certo, pelo menos já sei o que fiz.

Sugestões?


# Como compilar em somente um passo

Caloni, 2009-05-25 <computer> <blog> [up] [copy]

Uma das primeiras perguntas do teste do Joel é saber se você pode compilar todo o projeto em apenas um passo. Essa é uma questão essencial e um desafio para muitas equipes. Perdem-se horas sagradas para gerar um novo Release.

Compilação automática geralmente está disponível nas ferramentas de desenvolvimento. Se você estiver usando o Visual Studio, por exemplo, é possível fazer isso com uma linha:

devenv minha-solução.sln /Rebuild Release

Se não for exatamente o que você precisa, basta fazer uma pesquisa de quinze minutos e encontrar os parâmetros corretos. O objetivo é: eu rodo esse comando em cima do projeto inteiro em uma máquina zerada e ele simplesmente compila.

Múltiplas soluções

É lógico que ter apenas um solution ou workspace para guardar projetos médios e grandes é inviável. Demora para carregar no ambiente e possuem dezenas de dependências. Isso já foi tentado duas vezes nas duas empresas em que trabalhei e não funcionou. Talvez por isso seja necessário criar um script que rode o comando acima para todas as soluções do projeto, o que não muda muito o modus operandi da coisa:

call :Build ..\Libraries\Libraries.sln
call :Build ..\Services\Services.sln
call :Build ..\Drivers\Drivers.sln
call :Build ..\Tools\Tools.sln
goto :eof
:Build
echo %1...
devenv "%1" /Rebuild Release
exit /b %errorlevel%

Note que meu script usa a estrutura padronizada dos diretórios de um projeto, onde cada tipo de componente tem sua pasta e solução.

Aos poucos você pode ir colocando "frescurinhas" em seu build (executa Debug e Release, roda automatizado no servidor, faz testes unitários, incrementa o número da versão, ...), mas algumas premissas sempre se mantêm:

  • Deve ser possível compilar o projeto inteiro em um passo
  • Deve ser possível usar qualquer máquina de desenvolvimento para isso

Regras simples de ser seguidas se você usar sempre a máxima do KISS.


[2009-04] [2009-06]