For Fun and Profit

CMake - Parte 1: introdução

O CMake, desenvolvido pela Kitware, é um sistema de controle de compilação, multi-plataforma e código-aberto. O CMake oferece uma alternativa mais fácil e produtiva as "auto-tools (autoconf, automake, autoheader). Além disso, é interessante notar que o CMake foi escolhido como a ferramenta de build oficial para a nova versão do projeto KDE. Este é o primeiro de uma série de artigos detalhando desde as opções mais básicas até as mais avançadas do CMake.


INICIANDO NO CMAKE

A configuração básica do CMake gera em torno do arquivo CMakeLists.txt, através do qual é possível definir detalhes do projeto. Por exemplo:
- arquivos do projeto
- bibliotecas a serem linkadas
- opções de configuração para o projeto
- instalação de arquivos

Como exemplo da utilização do CMake vamos gerar um aplicativo "hello world" e gerenciar a sua compilação através do CMake.

PLAIN TEXT
C++:
  1. #include
  2.  
  3. using std::cout;
  4. using std::endl;
  5.  
  6. int main(void) {
  7. cout <<"Hello Cmake!" <<endl;
  8.  
  9. return 0;
  10. }

Manualmente poderiamos compilar esse aplicativo utilizando o g++, no Linux, da seguinte maneira:

PLAIN TEXT
CODE:
  1. g++ -c hello.cpp
  2. g++ -o hello hello.o

Isto nos criaria o executável "hello".

PORTANDO O HELLO CMAKE PARA O CMAKE

O mesmo projeto, gerenciado pelo CMake, ficaria da seguinte forma:

PLAIN TEXT
CODE:
  1. ##### HELLO CMAKE
  2. PROJECT(hello_cmake)
  3.  
  4. ADD_EXECUTABLE(
  5. hello
  6. hello.cpp
  7. )

O comando PROJECT é utilizado pelo CMake para identificar o nome do projeto e, opcionalmente, a linguagem de programação utilizada.

O comando ADD_EXECUTABLE é utilizado para adicionar um executável ao projeto. Neste comando é informado, primeiramente, o nome do executável e os arquivos de código-fonte que são necessários para gera-lo. No exemplo acima temos "hello" como o executável e hello.cpp como o código-fonte do projeto.

Uma vez editado este arquivo, já é possível gerar os makefiles necessários compilar o projeto. Para isso é necessário executar o seguinte comando:

PLAIN TEXT
CODE:
  1. $ cmake .

Tanto o arquivo CMakeLists.txt quanto o comando acima pressupõem que todos os arquivos encontram-se em um único diretório. Note o ponto como parâmetro para o CMake, o que identifica para o cmake que o arquivo CMakeLists.txt está no mesmo diretório aonde executamos o comando. Uma vez que este comando tenha sido executado com sucesso, a saida do comando deverá ser semelhante a esta:

PLAIN TEXT
CODE:
  1. $ cmake .
  2. -- Check for working C compiler: gcc
  3. -- Check for working C compiler: gcc -- works
  4. -- Check for working CXX compiler: c++
  5. -- Check for working CXX compiler: c++ -- works
  6. -- Configuring done
  7. -- Generating done
  8. -- Build files have been written to: /home/otavio/testes_de_codigos/hello_cmake

A partir deste momento, o projeto está pronto para ser compilado através do make:

PLAIN TEXT
CODE:
  1. $ make
  2. cmake.depends is up-to-date
  3. Building object file hello.o...
  4. Building executable /home/otavio/testes_de_codigos/hello_cmake/hello...

Ao final do processo deverá existir, neste diretório, um arquivo executável "hello". É possível, também, limpar o diretório dos arquivos gerados, neste caso utilizando o comando "make clean", o qual não deverá gerar qualquer saída.

Através desta introdução, acredito, foi possível mostrar o funcionamento básico do CMake através do clássico exemplo "Hello World". Em breve mostrarei como utilizar bibliotecas, opções de compilação, variáveis, etc através do CMake, tornando possível sua utilização em projetos de maior porte.

Esta entrada foi postada em Saturday, August 19th, 2006 at 5:16 am na categoria Desenvolvimento, Tecnologia. Você pode acompanhar as respostas através do RSS 2.0 feed. Você pode deixar uma resposta, ou um trackback do seu site.

« Tutorial de desenvolvimento de kernel
Malditos spammers »

Comentar

  • Páginas

    • Sobre
    • Meu Mundo de TI
      • Artigos
      • Filesystem Hierarchy Standard
      • Pacotes RPM (RPM Packages)
      • Screenshots
    • Variedades
      • Fotos
      • Mapas
      • Museu do IRC RioMafrense
      • Receitas
  • Arquivos

    • November 2008
    • October 2008
    • September 2008
    • August 2008
    • July 2008
    • June 2008
    • May 2008
    • April 2008
    • March 2008
    • February 2008
    • January 2008
    • November 2007
    • October 2007
    • September 2007
    • June 2007
    • April 2007
    • March 2007
    • February 2007
    • January 2007
    • December 2006
    • November 2006
    • October 2006
    • September 2006
    • August 2006
    • July 2006
    • June 2006
    • May 2006
    • April 2006
    • March 2006
    • February 2006
    • January 2006
  • Categorias

    • Ciência (3)
    • Dica (21)
    • Geral (67)
      • Curiosidades (6)
    • Mentes Brilhantes (1)
    • Sistemas Operacionais (37)
      • FreeBSD (1)
      • Linux (19)
        • Arch Linux (2)
        • Gentoo (13)
      • Mac OS X (11)
      • Outros Sistemas (1)
      • Unix (4)
      • Windows (2)
    • Tecnologia (84)
      • Banco de Dados (6)
      • Desenvolvimento (62)
        • Análise (1)
        • C & C++ (5)
        • POG (2)

For Fun and Profit is proudly powered by WordPress | Bob