Può essere difficile capire come funziona CMake. Farò del mio meglio per rispondere brevemente ad alcune delle domande che hai postato.
Perché cmake genera makefile anziché solo la creazione del progetto?
CMake è un cross-platform make system ed è indipendente dal compilatore. Non genera solo i sistemi di compilazione, ma genera anche i file di soluzione di Visual Studio. Con lo stesso file CMakeList.txt, qualcuno può facilmente creare una build di Windows (Visual Studio) o una build Linux (g ++).
Perché sono file cmake [una serie di] comandi e non solo i file di configurazione ad esempio: ini/xml/yaml
compilatori non utilizzano una configurazione universale, in modo da CMake deve adattare per il target compilatore.
I file CMake sono una serie di comandi per generare la configurazione appropriata per il compilatore di destinazione.
Quali sono i comandi che devo scrivere nel comando CMakeLists.txt? Direi semplicemente che il compilatore sarebbe troppo facile, suppongo che
Suppongono di generare la configurazione appropriata per il compilatore di destinazione, e lo saranno se scritti correttamente.
In quale ordine si suppone di dover eseguire i comandi?
Nell'ordine che conta, se l'ordine è importante. Sì, è una risposta vaga, ma dipende dal progetto. Ad esempio, il comando include() verrà utilizzato per aggiungere ulteriori file cmake e, se li si include nell'ordine sbagliato, si può interrompere la generazione del sistema di generazione.
Il primo comando nel file cmake deve essere la versione minima richiesta con l'ultima versione di CMake (3.0.1). Da lì dipende.:)
Ad esempio questo comando non funzionerà con versioni di CMake inferiori a 2.6. cmake_minimum_required (VERSION 2.6)
Vedere alcuni dei collegamenti del tutorial alla fine di questa risposta.
Tutto maiuscolo/minuscolo? Posso scrivere tutto in minuscolo?
Come indicato sul wiki del CMake language syntax page, tutti i comandi sono case insensitive, ma è necessario prendere in considerazione caso per i contenuti passati a un comando.
Perché i tutorial mi consigliano di elencare esplicitamente ogni file sorgente?
Perché è necessario elencare esplicitamente ogni file sorgente. Questo può essere fatto all'interno di un file cmake o di una lista di file separata a cui si fa riferimento nel file cmake. Si prega di vedere Antonio answer per un avvertimento di utilizzare un elenco di file separato.
CMake fornisce un commandaux_source_directory
che raccoglie i nomi di tutti i file di origine in una directory specificata e memorizza l'elenco a una variabile, ma dovrebbe essere utilizzato solo per i file di origine "generati" per lo stesso motivo di cui Antonio answer.
Come strutturare il mio CMakeLists.txt per mantenerlo breve e semplice da mantenere. Ogni file che ho cercato nei progetti reali sembrava molto disordinato.
È molto facile ingombrare un file CMake, e un modo per aiutare con questo è usare i file .cmake che si fanno riferimento usando il comando include.
Una buona risorsa (anche se ancora in fase di sviluppo) può essere trovata sul CMake about page.
E 'suddiviso in diverse sezioni:
- Overview
- Statistics (in fase di sviluppo)
- Participants
- Documentation
- License
- Success Stories
- Publications
- News
Tutorial
CMake Tutorial - Dalla CMake pagina di documentazione ufficiale
Getting Started With CMake - Un tutorial che utilizza CMake con gcc.
Using CMake To Build QT Projects - Un tutorial che utilizza CMake con QT.
grazie mille per la vostra informazione. Ma questo non è ancora chiaro: qual è la configurazione appropriata che il mio file deve generare? So che è "dipende da cosa vuoi". Ma sono sempre confuso per aiutare me stesso qui. La documentazione che hai collegato qui è un riferimento, ciò che è esattamente ciò che non sto cercando, perché presuppone che io abbia già compreso lo scopo generale. – Arne
@Arne, se vuoi una risposta specifica a una domanda specifica, allora ti suggerisco di creare una nuova domanda con quei dettagli. È difficile essere specifici senza questi dettagli. – jmstoker
Ho pensato che la mia domanda fosse specifica nel chiedere un tutorial approfondito. Le domande erano solo alcuni esempi, non tutti i miei problemi. È semplicemente sbagliato iniziare a imparare CMake scrivendo 20 domande di overflow dello Stack. Così ho pensato di perdere qualcosa che tutti conoscono tranne che da me che ho bisogno di leggere. – Arne