O CMake é um sistema de compilação open source e multi-plataforma. Consiste numa família de ferramentas concebidas para compilar, testar e criar pacotes de software. É usado para controlar o processo de compilação utilizando ficheiros de configuração simples e independentes da plataforma e dos compiladores usados. O CMake gera Makefiles que podem ser usados num ambiente de compilação à escolha do programador.
O OpenCV é uma biblioteca open source de visão computacional que já foi referida neste blog (ver Como instalar o OpenCV 2.3.1 no Ubuntu 11.10 Oneiric Ocelot com Suporte para Python).
Este tutorial vai guiá-lo pelo processo de usar o CMake para compilar projectos que usem a biblioteca OpenCV. Este tutorial é baseado num outro tutorial feito por Damiles mas tem algumas pequenas mudanças.
1. Criar um ficheiro chamado CMakeLists.txt e abri-lo para edição no seu editor de texto preferido.
2. Especificar a versão de CMake mínima requerida.
CMAKE_MINIMUM_REQUIRED( VERSION x.x.x )
3. Dar um nome ao projecto
PROJECT( project_name )
4. Encontrar as bibliotecas OpenCV. Uma vez o OpenCV é requerido pelo projecto, tem de ser definido com o comando REQUIRED
FIND_PACKAGE( OpenCV REQUIRED )
5. Definir o executável, o seu nome e os ficheiros dos quais depende. Neste exemplo apenas teremos o ficheiro main.c e iremos usar o nome do projecto para o nome do executável. O nome do projecto é guardado na variável $(PROJECT_NAME)
ADD_EXECUTABLE ( ${PROJECT_NAME} main.c )
6. Fazer o "Link" da biblioteca OpenCV com o executável. Para fazê-lo basta usar o comando TARGET_LINK_LIBRARIES com o nome do projecto e a biblioteca OpenCV.
TARGET_LINK_LIBRARIES( ${PROJECT_NAME} {OpenCV_LIBS} )
7. (Opcional) Adicionar um comando para ser executado após a compilação do programa. Este passo poderá ser útil se pretender copiar ou renomear ou fazer qualquer outra operação após a compilação. Neste exemplo iremos copiar o executável gerado e adicionar-lhe a extensão ".o" ao mesmo.
ADD_CUSTOM_COMMAND( TARGET ${PROJECT_NAME} POST_BUILD COMMAND cp ${PROJECT_NAME} ${PROJECT_NAME}.o
Pode ainda adicionar comandos para o passo de PRE_BUILD (são executados antes do processo de compilação) e de PRE_LINK (são executados antes do processo de "linking"). Para mais informação deverá consultar a documentação do CMake docs acerca do comando add_custom_command.
8.Guardar o ficheiro na mesma pasta em que se encontram os ficheiros com o código-fonte. O ficheiro deverá ser semelhante a este
CMAKE_MINIMUM_REQUIRED(VERSION x.x.x) PROJECT( project_name ) FIND_PACKAGE( OpenCV REQUIRED ) ADD_EXECUTABLE( ${PROJECT_NAME} main.cpp ) TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${OpenCV_LIBS} ) ADD_CUSTOM_COMMAND(TARGET ${PROJECT_NAME} POST_BUILD COMMAND cp ${PROJECT_NAME} ${PROJECT_NAME}.o )
9.Se desejar compilar o código-fonte na mesma basta basta executar
cmake .
No caso de desejar compilar o projecto numa pasta diferente, tal como a pasta "build" localizada na mesma pasta onde se encontra o código-fonte deverá entrar nessa pasta e executar
cmake ..
Para mais informação poderá também consultar a Getting started page na wiki do OpenCV.
Actualização (01/01/13): Coloquei no blog uma nova publicação demonstrando Como usar o OpenCV com o CMake e o Codeblocks no Ubuntu de modo a que se possa configurar um ambiente de desenvolvimento/depuração completo.
Actualização (01/01/13): Coloquei no blog uma nova publicação demonstrando Como usar OpenMP com CMake de modo a que se possa usar a API do OpenMP para processamento paralelo.
Achou esta publicação útil? Deseja contribuir para outros projectos envolvendo ciências computacionais, electrónica, robótica ou mecatrónica que serão publicados neste blog? Se sim, pode fazer uma doação utilizando o botão do Paypal abaixo. Obrigado! :)
0 Comments: