Entendiendo CMakeLists
CMake
In our introductory tutorial, we used CMake as the build system for our application, but we only really paid close attention to one of our CMakeLists.txt
files. Here, we're going to go over how it works in a bit more detail.
CMake es útil porque nos permite automatizar la mayoría de las cosas necesarias que hay que hacer antes de compilar.
CMakeLists.txt
Es posible que recuerde este archivo CMakeLists.txt
del primer tutorial:
|
|
La primera línea, project(helloworld)
define el nombre del proyecto.
Tras ella, definimos las versiones de las herramientas que vamos a necesitar. cmake_minimum_required(VERSION 3.16)
define la versión de CMake que vamos a llamar. Después usamos set()
para definir las variables (KF5_MIN_VERSION
y QT_MIN_VERSION
) que contienen las versiones de KDE Frameworks y de Qt.
Luego llegamos a una sección donde incluimos una serie de preferencias necesarias de CMake y de KDE usando extra-cmake-modules. No debe preocuparse demasiado de estas líneas por ahora y tampoco necesitaremos cambiarlas en este tutorial.
La siguiente sección es importante, ya que especifica las dependencias necesarias durante la compilación. Veamos la primera línea:
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS Kirigami2 I18n CoreAddons WidgetsAddons)
- find_package() encuentra y carga el componente externo.
- La primera palabra es la infraestructura (
KF5
). - Luego llamamos a la variable con las versiones que hemos configurado en la segunda línea.
COMPONENTS
es un parámetro que precede a los componentes específicos de la infraestructura que vamos a incluir.- Cada palabra tras
COMPONENTS
hace referencia a un determinado componente.
Nota
If you are looking to add any components listed in the KDE API documentation to your application, you may check the right sidebar for how to add the component with CMake. For instance, for
Kirigami2
, you will find something like find_package(KF5Kirigami2)
, which with the addition of extra-cmake-modules becomes something like find_package(KF5 COMPONENTS Kirigami2)
.
Pay close attention to your included components, as omitting ones used in our code will stop our application from compiling.
La línea final, add_subdirectory(src)
, hace que CMake apunte al directorio src/
.
|
|
Como la mayor parte del trabajo pesado se realiza en el primer archivo, este es mucho más breve.
- set() se usa para definir
helloworld_SRCS
comomain.cpp
yresources.qrc
(si decidimos crear archivos C++ adicionales, también tendremos que añadirlos aquí). - add_executable() se encarga de dar nombre a nuestro ejecutable y de tomar los archivos necesarios para crearlo.
- target_link_libraries enlaza de forma dinámica las bibliotecas usadas en el código fuente con nuestro ejecutable.
Nota
Tenga en cuenta que estas bibliotecas deben coincidir con los componentes que incluimos en nuestro archivoCMakeLists.txt
anterior; de lo contrario, estos componentes no se incluirán y nuestra aplicación no se compilará.Esta configuración será útil para desarrollar la mayoría de las aplicaciones de Kirigami.