Come dovrei includere le librerie che voglio linkare staticamente nel mio repository?

0

So come fare effettivamente il collegamento, ma non sono sicuro di quale sia la pratica migliore per scaricare queste librerie nel mio repository. Dovrei semplicemente includerli usando Git? Dovrei usare i sottomoduli git (ma cosa succede se la libreria in questione non usa git)? O dovrei fornire uno script di shell per scaricarli prima di costruire? Come viene gestito nella maggior parte dei progetti?

    
posta markasoftware 07.05.2017 - 05:46
fonte

2 risposte

2

Il tuo obiettivo dovrebbe essere che un nuovo sviluppatore possa ottenere tutte le risorse necessarie per creare il tuo prodotto nel modo più semplice possibile, e che puoi facilmente ottenere diciamo una versione vecchia di nove mesi di tutte le fonti da git e costruiscila.

Ci sono due modi per farlo: o fai parte del processo di compilazione che le fonti esterne vengono automaticamente scaricate e costruite secondo necessità, quindi se controllo le fonti di nove mesi e premo il pulsante "Costruisci", nove le vecchie versioni di queste fonti esterne vengono automaticamente scaricate e generate. O controlli queste fonti nel tuo progetto git. Qual è il metodo più semplice e affidabile.

    
risposta data 07.05.2017 - 10:12
fonte
0

Non esiste una risposta univoca, ed è anche una questione di opinioni, abitudini e convenzioni (che sono probabilmente diverse in varie comunità e per vari sistemi operativi o computer).

Per lo meno, documenta le dipendenze richieste , quale versione ti aspetti (anche per gli strumenti di compilazione, ad esempio il compilatore C ++) e dove scaricarli. Cerca di evitare, o di aiutare, qualsiasi infernale dipendenza .

(Sto pensando implicitamente ad alcuni software gratuito per GNU / Linux, adattare i miei suggerimenti al tuo sistema & community)

Se il tuo programma è un software libero in esecuzione su Linux e se le dipendenze sono software libero comune (ad esempio libcurl e < a href="http://zlib.net/"> zlib sono probabilmente inclusi in tutte le distribuzioni Linux), potresti solo menzionarli.

Potresti anche voler pacchetto il tuo software per alcuni comuni Distribuzioni Linux . Puoi anche fornire un .deb e / o .rpm file del pacchetto del software. Potresti sperare che i contributori della distribuzione possano impacchettare il tuo software gratuito.

BTW, mi raccomando contro link e ti suggerisco strongmente di link dinamicamente (almeno contro le comuni biblioteche).

Se le dipendenze sono alcune librerie non comuni (spesso non pacchettizzate) potresti usare git submodule

Alcuni progetti software forniscono uno script per scaricare e / o creare dipendenze. Ad esempio, GCC fornisce un contrib/download_prerequisites script .

Se possibile, spiega cosa fare quando le dipendenze vengono aggiornate (ad esempio quando la dipendenza di libcurl passa dalla versione 7.50 alla 7.52) e come ricostruire i tuoi contenuti. Cerca di facilitare il caso in cui una dipendenza viene installata in un modo non standard (ad esempio una versione più recente in /usr/local/lib/ con la versione del sistema precedente in /usr/lib/ ). Forse strumenti come autoconf o cmake o pkg-config potrebbe essere rilevante per affrontare questo. Almeno, hai procedure di compilazione leggibili e facilmente migliorabili (ad esempio, hai un commento ben scritto e ben scritto Makefile e usa variabili appropriate lì)

BTW, credo che le pratiche siano molto diverse su Linux, su MacOSX, su Android, su Windows o persino tra diverse comunità (ad esempio amministratori di server web contro fisici nucleari o bioinformatici).

    
risposta data 07.05.2017 - 09:04
fonte

Leggi altre domande sui tag