Motivo per utilizzare le intestazioni e le librerie mingw win32 con LLVM / Clang

6

C'è qualche buona ragione (eccetto "GCC è meglio") per usare MinGW win32api / headers / libs con LLVM / Clang. Supponiamo che in due o tre anni Clang abbia maturato abbastanza (in C ++ 0x e prestazioni) che sia un concorrente / sostituto e che abbia i suoi vantaggi rispetto a MSVC come fa GCC su alcuni account. Perché mai vorremmo evitare di utilizzare la libreria MS e le implementazioni di intestazione dell'API win32, che è disponibile gratuitamente sotto forma di Windows SDK?

    
posta rubenvb 10.12.2010 - 17:15
fonte

3 risposte

4

Uno dei motivi per cui esistono i file di intestazione MingW è sicuramente il copyright: mentre sono "gratuiti come nella birra", non ti è consentito ridistribuirli. Né gli autori di LLVM potevano ridistribuirli, ma ogni utente di LLVM / Clang avrebbe dovuto scaricarli da soli. Quindi sarebbe ragionevole che Clang fornisse un insieme di file header e sarebbe quindi ragionevole usare il codice MingW come punto di partenza.

Inoltre, un altro motivo per cui esistono i file di intestazione MingW (IIRC) è che le intestazioni SDK utilizzano le estensioni C che non erano supportate da gcc. Potrebbero essere supportati ora, in modo che la ragione potrebbe essere andata.

    
risposta data 23.12.2010 - 01:55
fonte
2

L'unica vera ragione per cui posso pensare è di adottare una filosofia prettamente "Microsoft-free".

Puoi chiedere agli autori delle intestazioni di mingw win32, ma sospetto che potrebbero esserci anche dei problemi di copyright.

    
risposta data 10.12.2010 - 23:37
fonte
-1

Questa risposta è per il 2018 e, per quanto ne so, si applica a tutte le versioni di Windows da Vista (fornitura di aggiornamenti).

La risposta breve è: non puoi. O più precisamente, puoi farlo, ma ti trascineranno i denti in ogni fase del processo, trascorrendo innumerevoli ore di lavoro a combattere per far sì che l'API funzioni per te piuttosto che contro di te, ed è semplicemente una questione se ne valga la pena .

L'API di Windows è progettata per essere da incubo da utilizzare senza MSVC, perché Microsoft vuole che tu usi l'intera soluzione di sviluppo e non ti danno la possibilità di evitare Visual Studio se usi le loro librerie. Anche se può sembrare conveniente e ragionevole che il sistema operativo venga fornito con Windows SDK gratuitamente, non funzionerà senza la libreria standard C, che viene fornita come download da Microsoft. Quando scarichi questa libreria tramite il programma di installazione, scoprirai che l'UCRT di Microsoft dipende dalle intestazioni trovate solo nel pacchetto Visual C ++, che è un download di 600 MB + e consuma oltre 2 GB quando installato. E dopo tutto ciò, il tuo compilatore farà il default per soffocare sul dialetto personalizzato di Microsoft C, che non è C99 ma usa commenti di linea e ha innumerevoli altre trappole progettate specificamente per far scattare compilatori sane.

Quanto sopra inoltre non graffia nemmeno la superficie legale che il tuo team potrebbe dover delegare per costare ancora più denaro in modo da poter capire cosa è ridistribuibile e sotto quali termini. Le librerie di MinGW risolvono non solo i problemi legali per le librerie standard (grazie alla clausola GPL), ma rendono anche indolore l'uso nell'effettivo ISO C / C ++.

La mia esperienza con questo problema deriva da un progetto a cui sto lavorando per sviluppare un codebase utilizzando un processo di build unificato basato su LLVM. Tutto funziona abbastanza bene su Linux e macOS, ma su Windows senza MinGW mi ci sono voluti giorni per passare inosservatamente a questo, e non sono nemmeno entrato nel singhiozzo che ci sarà inevitabilmente durante il collegamento con LLD. Non vale la pena utilizzare Microsoft, a meno che tu non stia utilizzando MSVC, perché Microsoft dice di andare fino in fondo o di andare a casa, e hanno messo il loro codice con la loro bocca con quella.

    
risposta data 27.05.2018 - 00:25
fonte

Leggi altre domande sui tag