I file di progetto MSBuild hanno lo stesso scopo dei makefile NMAKE in un processo di compilazione? (praticamente equivalente)

4

Sto trovando difficile capire il motivo di Microsoft dietro la costruzione di "progetti" concettuali come questo. Spediscono MSBuild.exe e NMAKE.exe insieme a un'installazione di Visual Studio 2015 ma entrambi sembrano avere lo stesso scopo.

Se sono entrambi (in senso pratico) equivalenti ma utilizzano formati diversi, non mi preoccuperò di imparare a scrivere entrambi. Se entrambi hanno i loro scopi, potrei riconsiderare.

Il seguente testo è solo la mia teoria corrente su tutto ... ma ho fatto questa domanda perché ci potrebbero essere persone qui con esperienza nella personalizzazione di questi file a differenza di me ...

Sembra che MSBuild sia fatto per quelli che dipendono pesantemente dall'ambiente di Visual Studio (file .sln) per la compilazione. E leggendo un po 'su di esso, mi sono chiesto: la compilazione delle dipendenze non può essere separata da diversi progetti che consentono una compilazione parziale quando si utilizza MSBuild? Ciò comporterebbe la presenza di più progetti in una soluzione e quindi la creazione della soluzione per la realizzazione dell'intero prodotto.

Come puoi vedere ... Sto cercando di capire la filosofia di MSBuild e perché è necessaria nel processo di costruzione. Al momento, sto iniziando a chiedermi se si basa effettivamente su NMAKE e si compila nei comandi NMAKE. Ciò avrebbe molto senso perché non riesco a capire perché qualcuno avrebbe bisogno di entrambi nello stesso processo di compilazione.

    
posta thelittlegumnut 08.01.2016 - 09:38
fonte

1 risposta

5

Entrambi hanno lo stesso scopo di controllare e automatizzare complessi processi di compilazione. Tuttavia, MSBuild è più moderno, ha più capacità e si integra molto (!) Meglio nel processo di generazione dell'IDE di Visual Studio (entrambi utilizzano effettivamente lo stesso "formato di file di input" come file csproj e sln). Questi file di progetto possono essere effettivamente modificati e gestiti (almeno al 98%) da una finestra di dialogo "Proprietà del progetto" ben strutturata. Questo non è possibile facilmente con i file nmake, perché NMake non è mai stato progettato per questo scopo.

IMHO NMake viene fornito con Visual Studio a causa della compatibilità con le versioni precedenti , grazie a una migliore compatibilità multipiattaforma e perché a volte è più adatto per le attività in cui è necessario integrarsi strumenti nel processo di compilazione che sono completamente al di fuori dell'IDE VS. Quest'ultimo può essere realizzato anche con MSBuild, ma NMake è IMHO spesso un adattamento migliore se devi creare manualmente la configurazione di build, perché è per questo che è stato progettato make .

NMake era l'implementazione di Microsoft del comando Unix make , che ha origini nel 1977, secondo Wikipedia . A causa di questa storia, ci sono ancora molti progetti che utilizzano i makefile. Soprattutto nel mondo Unix / Linux, make è ancora uno strumento ampiamente utilizzato e uno strumento come NMake offre una migliore compatibilità con gli strumenti make utilizzati in quell'ecosistema.

Couldn't compilation of dependencies be separated by different projects allowing for partial compilation when using MSBuild? That would involve having multiple projects in a solution and then building the solution to build the entire product.

Questo è l'approccio standard per qualsiasi progetto più grande, niente di veramente sorprendente. Ma su quel livello di astrazione, non è diverso da make / NMake.

    
risposta data 08.01.2016 - 09:51
fonte

Leggi altre domande sui tag