Le migliori pratiche di gestione delle dipendenze c / C ++ sui server di compilazione?

1

Mi sviluppo in gran parte in java che ha Maven o Ant / Edera. Esiste un modo consigliato per gestire le dipendenze di compilazione per i progetti c ++? Sto preparando la build sul nostro server di build in questo momento, ma la cosa che mi viene in mente è che se le librerie di dipendenze cambiano come faccio a tenere traccia di quelle vecchie build non ne risentono, ma quelle nuove possono usare le versioni più recenti di una libreria?

Un semplice pensiero è che sposto tutte le librerie di terze parti nel mio repository e poi le riferimento con:

#include "sqlite3.h"
#include "mosquitto.h"

Invece di

#include <sqlite3.h>
#include <mosquitto.h>

Qualcuno può consigliare come farlo in produzione?

    
posta simgineer 15.11.2018 - 20:51
fonte

1 risposta

3

Lo spostamento delle dipendenze di build di terze parti nel repository è perfettamente soddisfacente e presenta anche alcuni vantaggi (ad esempio, mancata corrispondenza delle versioni, aggiornamenti tracciati). Ma così facendo non dovrebbe toccare il tuo codice.

C / C ++ usa un include percorso per determinare dove per trovare le librerie incluse in questo modo

#include <...>

A seconda della tua toolchain e del tuo sistema di build, dovrai seguire diversi passaggi per configurarlo. Indipendentemente da ciò, la cosa migliore sarebbe creare una cartella "third_party" con sottocartelle contenenti ciascuna dipendenza. Quindi aggiungi ciascuna delle quelle cartelle al tuo percorso di inclusione in modo tale che le tue direttive di inclusione esistenti funzionino.

In CMake, dovresti usare target_include_directories per ottenere ciò. In un semplice Makefile con GCC o clang, devi aggiungere il flag -I per ogni cartella.

    
risposta data 16.11.2018 - 01:27
fonte

Leggi altre domande sui tag