Compreender o CMakeLists
CMake
No nosso tutorial introdutório, usámos o CMake como sistema de compilação para a nossa aplicação, mas só prestámos atenção a um dos nossos ficheiros CMakeLists.txt
. Aqui, vamos ver como funcionam os CMakeLists com um pouco mais de detalhe.
O CMake é útil porque nos permite automatizar muitas das coisas que precisam de ser feitas antes da compilação.
CMakeLists.txt
Poderá recordar este ficheiro CMakeLists.txt
do primeiro tutorial:
|
|
A primeira linha, project(helloworld)
define o nome do projecto.
Depois disto, iremos definir as versões necessárias das nossas ferramentas. O cmake_minimum_required(VERSION 3.16)
configura a versão do CMake que iremos invocar. Depois iremos usar o set
para definir as variáveis (KF5_MIN_VERSION
e QT_MIN_VERSION
) que contêm as versões das Plataformas do KDE e do Qt.
Depois chegamos a um secção onde incluímos um conjunto de definições necessárias do CMake e KDE, usando o extra-cmake-modules. Não se deverá preocupar demasiado com estas linhas por agora e não será necessário alterá-las neste tutorial.
A seguinte secção é importante, porque define quais as dependências que iremos buscar na altura da compilação. Vejamos a primeira linha:
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS Kirigami2 I18n CoreAddons WidgetsAddons)
- O find_package() procura e carrega o componente externo.
- A primeira palavra é a plataforma (
KF5
). - Depois iremos invocar a variável com as versões definidas por nós na segunda linha.
- O
COMPONENTS
é um parâmetro que antecede os componentes específicos da plataforma que iremos incluir. - Cada palavra a seguir ao
COMPONENTS
refere-se a um componente específico.
Nota
Se estiver a precisar de adicionar algum dos componentes indicados na documentação da API do KDE à sua aplicação, poderá verificar a barra lateral direita para ver como adicionar o componente com o CMake. Por exemplo, para o
Kirigami2
, irá encontrar algo do tipo find_package(KF5Kirigami2)
o qual, com a adição dos extra-cmake-modules, fica algo semelhante a find_package(KF5 COMPONENTS Kirigami2)
.
Preste bastante atenção aos seus componentes incluídos, dado que omiti-los no nosso código fará com que a aplicação deixe de compilar.
A linha final, add_subdirectory(src)
, aponta o CMake para a pasta 'src/'.
|
|
Dado que a maior parte do trabalho pesado é feito pelo primeiro ficheiro, este é bastante mais pequeno.
- O set()](https://cmake.org/cmake/help/latest/command/set.html) é usado para configurar o
helloworld_SRCS
comomain.cpp
e oresources.qrc
(se optarmos por criar ficheiros C++ adicionais, também os teremos de adicionar aqui) - O add_executable() toma conta de atribuir o nome ao nosso executável e recolher os ficheiros necessários para o criar
- O target_link_libraries liga de forma dinâmica as bibliotecas usadas no nosso código ao nosso executável.
Nota
Lembre-se que estas bibliotecas deve corresponder aos componentes que incluímos no nosso ficheiroCMakeLists.txt
anterior - caso contrário, estes componentes não serão incluídos e a aplicação não irá compilar.Esta configuração será útil quando estiver a desenvolver a maioria das aplicações de Kirigami.