picoTCP (uno stack TCP / IP embedded open source) ha sempre avuto un focus sullo sviluppo (sia in picoTCP che in se stesso con picoTCP) su linux & sistemi gcc. L'obiettivo finale è solitamente un micro incorporato (basato su ARM). Per questo motivo inseriamo una certa logica nel makefile per mantenere alta la modularità. Stiamo anche utilizzando flag di compilazione per abilitare / disabilitare tutti questi moduli.
Iniziamo a notare che Linux non è l'unico sistema di sviluppo (qui intendo mentre utilizzo picoTCP nel tuo progetto) nel mondo e che Windows insieme a un gruppo di IDE con il proprio compilatore (proprietario) non sono buoni amici con i Makefile.
Questo di solito significa che questi utenti devono aggiungere manualmente i file picoTCP al loro progetto ed espandere il loro sistema di build. Ciò significa anche che le persone si imbattono in problemi come
- quali file includere (perché la logica è nel Makefile)
- in quale ordine devono essere inclusi
- aggiorna manualmente tutti questi file quando c'è una nuova versione
Attualmente stiamo esaminando i diversi modi di distribuire picoTCP in un modo più conveniente e vorremmo conoscere i pro e i contro.
Al momento abbiamo identificato un paio di modi
Genera file .a
- (+) Soluzione pulita che continua a utilizzare il Makefile esistente
- (-) Richiede un Linux & ambiente gcc
- (-) Funziona solo con lo stesso compilatore / sistema di destinazione
Genera un singolo file .c e .h
Questo è qualcosa che la libreria Mongoose di Cesanta fa
- (+) Molto portatile e amp; semplice da usare
- (-) Nightmare per eseguire il debug
- (-) Avranno bisogno di script esterni per rimuovere #include e unire file insieme
- (-) Verranno inclusi tutti i moduli, quindi probabilmente dovremo aggiungere altri flag di compilazione
Costruisci un generatore di libreria (basato sul web) (di nuovo un file .c e .h)
Qualcosa fatto comunemente nelle applicazioni web (come JQuery)
- (+) Aiuta le persone nella creazione di una libreria ottimizzata
- (+) basato sul Web, quindi non c'è bisogno di nessun ambiente
- (-) La maggior parte del lavoro per configurare un tale sistema
- (-) Come tenere traccia di molte versioni di librerie?
Potresti fornire commenti e altre alternative?