2014-05-23 12 views
8

Ho appena iniziato a lavorare con CMake e ho notato che entrambi hanno uno find_package e uno find_library. E questo mi confonde. Qualcuno può spiegare la differenza tra un pacchetto e una biblioteca nel mondo della programmazione? O, nel mondo di CMake?Pacchetto vs Libreria

Apprezzo, ragazzi!

risposta

6

Immaginate che si desidera utilizzare zlib nel progetto, è necessario trovare il file di intestazione zlib.h, e la libreria libz.so (su Linux). È possibile utilizzare i comandi cmake di livello basso find_path e find_library per trovarli oppure è possibile utilizzare find_package(ZLIB). Il comando successivo proverà a scoprire tutto ciò che è necessario per usare zlib. Può essere definizioni di macro aggiuntive o dipendenze.

Update, più particolare circa find_package: quando il comando CMake find_package(SomeThing) si chiama, as says the documentation, ci sono due possibilità: la modalità di modulo (che cerca un file FindSomeThing.cmake), o il modo di configurazione (che cerca un file chiamato SomeThingConfig.cmake). Per ZLIB, c'è un modulo chiamato FindZLIB, fornito con CMake stesso (sul mio computer Linux che è il file /usr/share/cmake/Modules/FindZLIB.cmake). Questo modulo è uno script CMake che utilizza l'API di CMake per cercare i file ZLIB nelle posizioni predefinite o chiedere all'utente la posizione se non può essere trovato automaticamente.

+1

Come viene definito ZLIB? Chi ha scritto i comandi necessari per scoprire cosa è necessario usare zlib? – ShrimpCrackers

+0

@ShrimpCrackers: ho modificato la risposta. – lrineau

Problemi correlati