È necessario imparare i Makefile quando hai un IDE? [chiuso]

5

Recentemente ho iniziato a studiare Makefile in Linux. Ho una vasta esperienza nello sviluppo di applicazioni con IDE avanzati, come Visual Studio.

La mia prima impressione e query dopo aver letto alcuni tutorial: c'è bisogno di studiare i Makefile? Forse gli IDE lo stanno usando internamente, ma è qualcosa che tutti dovrebbero imparare alla fine?

    
posta Shamim Hafiz 18.01.2013 - 01:17
fonte

5 risposte

12

Sì, anche se non li usi spesso, è bello sapere come e perché le cose funzionano come loro. Alcuni ambienti potrebbero non supportare IDE in quanto tali o l'IDE per una nuova lingua potrebbe essere immaturo o inesistente. È inoltre possibile creare uno script che attiva un makefile, consentendo in tal modo il codice che può eseguire l'autocompilazione senza l'intervento umano. Quindi, saper fare programmi completamente funzionanti da molti pezzi è una buona abilità da avere; anche se per lo più usi la versione del pilota automatico.

    
risposta data 18.01.2013 - 02:47
fonte
8

Ci sono un numero illimitato di cose da imparare con una profondità illimitata alla quale possono essere apprese.

Dal momento che avrai </life> di distanza prima di apprendere tutto, devi dare la priorità a cui concentrarti.

Se sei uno sviluppatore di Windows che usa gli strumenti di Windows, allora imparare i makefile unix potrebbe non essere un grande vantaggio. Se sei uno sviluppatore c su qualsiasi piattaforma, è probabilmente una buona idea.

Tieni presente che piattaforme e linguaggi diversi hanno approcci diversi allo stesso problema, ad esempio apache ant con java.

Quindi dipende molto da dove ti stai dirigendo nella tua carriera / apprendimento. IMO, diventare un esperto nel software di controllo della versione (ad esempio, git) è una delle migliori cose che un ingegnere del software può fare, se non lo ha già fatto.

    
risposta data 18.01.2013 - 03:42
fonte
2

Sì, se hai bisogno di opzioni di compilazione avanzate.

File di progetto autogen di Visual Studio, come .csproj.

.csproj stesso è una specie di makefile in stile XML.

Puoi utilizzare un editor di testo per modificare e personalizzare .csproj se hai bisogno di opzioni avanzate.

Se studi attentamente MSBuild, scoprirai che esistono concetti simili a Makefile.

Costruisci obiettivi, includi elenchi di file, definisci proprietà, ecc ...

    
risposta data 18.01.2013 - 07:48
fonte
1

Sì. Perché IDE potrebbe non essere utile se vuoi fare automazione. Uno dei test di Joel è un build automatico a un pulsante. I makefile possono produrlo. Inoltre, tale build può anche essere attivata dalla macchina remota, senza troppi problemi.
Non sono a conoscenza del potere degli IDE su Linux, ma Makefile aiuta anche a fare più cose rispetto alla pura compilazione. Possono anche essere utilizzati per l'installazione, il controllo delle dipendenze e l'installazione di pre-compilazione. Puoi anche combinarli con gli script di shell e creare più build.

    
risposta data 18.01.2013 - 06:50
fonte
0

Un IDE e un sistema di compilazione automatizzata hanno scopi diversi. Un IDE è utile quando stai sviluppando il software e vuoi compilare il codice ect. Un sistema di generazione automatica è utile quando si desidera automatizzare l'edificio e la compilazione.

Ci sono molte situazioni in cui un sistema automatico ti può aiutare:

  1. Hai un grande progetto con un gran numero di sviluppatori che contribuiscono al controllo del codice sorgente? Come si crea un'ultima build compilata? Ti aspetti che qualcuno sia incaricato di compilare l'ultima versione nel loro IDE?

  2. Il tuo progetto dipende da alcune librerie sviluppate da qualcun altro su una timeline diversa? Come gestisci i loro aggiornamenti? Devi aggiornare manualmente quel riferimento nel tuo progetto e poi compilare?

  3. Molto spesso un progetto avrà diversi componenti diversi. Ad esempio un servizio Web e un client desktop e mobile. Cosa succede se si dispone di alcune risorse, di valori stringa o di immagini comuni in tutte? Come gestirai gli aggiornamenti in loro? Non vorrai dare la caccia a tutti i riferimenti nei tuoi diversi progetti e aggiornarli manualmente.

I makefile in linux, sono solo un esempio del sistema di compilazione automatica. Ci sono diverse opzioni per questo anche nel mondo .NET.

Sebbene l'utilizzo e la configurazione di tali sistemi non siano strettamente necessari, organizzerai e ottimizzerai molto il tuo sviluppo se impari e utilizzi questi sistemi.

    
risposta data 18.01.2013 - 07:25
fonte

Leggi altre domande sui tag