Qual è un buon modo per gestire le dipendenze del mio codice sulle librerie senza versioni?

3

Sto scrivendo questa piccola utility, FOSS ma non intesa per l'implementazione estesa, il packaging nelle distribuzioni del SO ecc. La mia utilità dipende da diverse librerie - alcune sono solo header (è C ++), alcune sono intestazioni + librerie compilate.

Ora, quando si tratta di una libreria con versione corretta rilasciata, la vita è semplice. Ho CMake cercare quella libreria, rilevare il numero di versione, richiedere un numero appropriato e sono impostato. Inoltre, non mi preoccupo di includere una copia di tale libreria con il mio codice nel repository di controllo di revisione.

Ma cosa succede se la libreria su cui sto lavorando è solo un progetto github, con gli sviluppatori che occasionalmente si impegnano a farlo, e nessun rilascio o versioning? Come dovrei dipendere da quella libreria e formalizzare questa dipendenza? Dovrei includere un'istantanea di esso? Supponete che esista altrove, cercatelo e provate a determinare il codice del changeset o il timestamp?

Nota:

Questa domanda non riguarda il mio specifico ambiente di sviluppo, ma puoi usarlo per illustrare o se il tuo suggerimento è specifico. Scrivo (principalmente) C ++, uso mercurial per il controllo di revisione e CMake come sistema di compilazione.

    
posta einpoklum 26.05.2016 - 23:44
fonte

1 risposta

1

Non ho un proiettile d'argento. È necessario considerare la quantità di codice nel progetto github, nonché se si può presumere che l'accesso a github non costituirà un problema per gli utenti (git è disponibile, la connessione internet è disponibile, ecc.)

Se decidi di evitare di includere un'istantanea del codice di terze parti, qui è un riferimento che spiega come scaricare un determinato stato di un repository Github. Non ho familiarità con CMake, quindi non so come si possano implementare questi passaggi utilizzando CMake.

Non suggerirei di implementare la scoperta o l'identificazione automatica del codice sorgente di terze parti, perché sarà sensibile alle modifiche che sono fuori dal tuo controllo e potrebbe facilmente diventare una catena debole nel processo di generazione.

    
risposta data 03.06.2016 - 11:27
fonte