cmake - smart - Paquete vs Biblioteca
programar contratos inteligentes (1)
Acabo de comenzar a trabajar con CMake y me di cuenta de que tienen tanto un find_package
como una find_library
. Y esto me confunde. ¿Alguien puede explicar la diferencia entre un paquete y una biblioteca en el mundo de la programación? O, en el mundo de CMake?
Lo aprecio, chicos!
Imagine que desea utilizar zlib en su proyecto, necesita encontrar el archivo de encabezado zlib.h
y la biblioteca libz.so
(en Linux). Puede usar los comandos find_path
bajo nivel find_path y find_library
para encontrarlos, o puede usar find_package(ZLIB)
. El comando posterior intentará averiguar todo lo necesario para usar zlib. Pueden ser definiciones de macros adicionales, o dependencias.
Actualización, más detalles sobre find_package
: cuando se find_package
el comando CMake find_package(SomeThing)
, como dice la documentación , hay dos posibilidades: el modo de módulo (que busca un archivo FindSomeThing.cmake
), o el modo de configuración (que busca un archivo llamado SomeThingConfig.cmake
). Para ZLIB, hay un módulo llamado FindZLIB
, que se incluye con CMake (en mi máquina Linux, que es el archivo /usr/share/cmake/Modules/FindZLIB.cmake
). Ese módulo es un script de CMake que usa la API de CMake para buscar archivos ZLIB en ubicaciones predeterminadas, o le pregunta al usuario si no se puede encontrar automáticamente.