CMake no KDevelop

O CMake é um conjunto de ferramentas multi plataforma, destinada a geração automatizada de programas. Ele é usando em conjunto com o compilador, orquestrando compilações complexas.

Iremos abordar aqui um exemplo simples de código, integrado com o KDevelop.

Fontes do projeto

Iremos explicar como criamos nosso projeto.

Primeiramente crie um projeto c, conforme apresentado no tutorial do link a seguir:

http://maurinsoft.com.br/index.php/2021/02/12/kdevelop-novo-projeto/

Em seguida, entre no projeto teste02, e com o botão direito, abra o menu, conforme apresentado a seguir:

Agora selecione a opção create file, conforme figura acima.

Digite os funcoes.c, depois repita a mesma operação com funcoes.h.

Agora temos no projeto, conforme o exemplo abaixo:

Neste exemplo temos dois fontes:

  • main.c
  • funcoes.c

O main.c usa uma função do funcoes.c, iremos ver como incluir isso no CMAKE.

Copie os códigos para os respectivos fontes, conforme apresentado.

Fonte do main.c:

#include <stdio.h>
#include <stdlib.h>
#include “funcoes.h”

int main(int argc, char *argv[])
{
teste1();
return 0;
}

Fonte do funcoes.c:

#include “funcoes.h”
#include <stdio.h>
#include <stdlib.h>
void teste1(void)
{
printf(“Teste funcoes”);
}

Fonte do funcoes.h:

#ifndef FUNCOES_H
#define FUNCOES_H
void teste1(void);
# endif /FUNCOES_H/

Exemplo do CMakeList.txt

cmake_minimum_required(VERSION 3.0)
project(teste02 LANGUAGES C)
include_directories(include)
set(CMAKE_C_FLAGS “-Wall”)
file( GLOB SRCS *.c *.h)
add_executable(teste02
main.c
funcoes.c
)
install(TARGETS teste02 RUNTIME DESTINATION bin)

Agora vem a explicação do CMAKE

O cmake_minimum_required diz a versão mínima do cmake exigida para executar o script.

project diz, qual linguagem é o alvo que iremos compilar. Neste caso indiretamente dizemos também o compilador e informações a respeito de linkagem.

include_directories, diz para incluirmos o diretório corrente.

Já o comando set, avisa o compilador para ativar o parâmetro -Wall

O file pesquisa, como fonte qualquer arquivo de extensão .c ou .h;

E por fim add_executable, monta o binário (executável) a partir dos arquivos .c adicionados.

O install, cria um fluxo de instalação. Já é o processo tipo make install.