Sto sviluppando la mia libreria di sola intestazione che voglio usare come framework in altri software. Sto utilizzando CMake
per l'impostazione di target dimostrativi, test e così via.
Tuttavia, non sono sicuro di come gestire le dipendenze della mia biblioteca. Attualmente sto usando il seguente approccio:
FIND_PACKAGE( foo )
Ho un file config/foo.hh.in
di configurazione per foo
che controlla se il pacchetto esiste:
#ifndef FOO_HH__
#define FOO_HH__
#cmakedefine HAVE_FOO
#endif
Nel CMakeLists.txt
principale, lo faccio:
CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/include/config/foo.hh.in ${CMAKE_SOURCE_DIR}/include/config/foo.hh )
Nel codice, posso quindi fare:
#include "config/foo.hh"
#ifdef HAVE_FOO
// Code that is specific to having the 'foo' library available
#endif
Il problema con questo approccio è che funziona solo una volta , vale a dire quando la libreria viene installata per la prima volta e tutte le dipendenze vengono controllate. Dato che sono non che spedisco le dipendenze opzionali con la mia biblioteca, mi chiedo se questo sia un buon approccio. Cosa succede se l'utente decide di installare una dipendenza opzionale dopo che installa la mia libreria? In questo caso, non sarò in grado di rilevare la presenza della libreria.
In che modo risolvi questo problema? Cosa sto sbagliando con questo approccio?