Domanda

Sto lavorando su un open source C ++ del progetto, per il codice che compila su Linux e Windows. Io uso CMake per costruire il codice su Linux. Per facilità di installazione di sviluppo e di ragioni politiche, devo attenersi a Visual Studio file di progetto / Editor su Windows (non posso passare a Code :: Blocks , per esempio). Vedo le istruzioni per generare file di Visual Studio con CMake, come qui .

Hai usato CMake per generare i file di Visual Studio prima? Come è stata la tua esperienza? Supponiamo che io voglio aggiungere un nuovo file al mio progetto. Qual è il flusso di lavoro per questo?

È stato utile?

Soluzione

CMake è in realtà piuttosto buono per questo. La parte fondamentale era tutti sul lato di Windows deve ricordarsi di eseguire CMake prima di caricare nella soluzione, e tutti dalla nostra parte Mac avrebbe dovuto ricordarsi di eseguire prima di fare.

La parte più difficile è stata come sviluppatore di Windows assicurandosi che le modifiche strutturali erano nel file cmakelist.txt e non nei file di soluzione o di progetto, come tali modifiche avrebbero probabilmente perdersi e anche se non si perde non si sarebbe trasferito verso il lato Mac che ha anche bisogno di loro, ei ragazzi di Mac dovrebbero ricordarsi di non modificare il file marca per le stesse ragioni.

Si richiede solo un po 'di pensiero e di pazienza, ma ci saranno degli errori in un primo momento. Ma se si utilizza continua integrazione su entrambi i lati allora questi avranno scosso fuori presto, e la gente finalmente prendere l'abitudine.

Altri suggerimenti

Non sono sicuro se è direttamente legato alla domanda, ma ero alla ricerca di una risposta per come generare * .sln da progetti cmake ho scoperto che si può usare qualcosa di simile a questo:

cmake -G "Visual Studio 10"

L'esempio genera bisogno di VS 2010 file da un ingresso CMakeLists.txt file

Abbiamo spostato la catena di costruzione del nostro reparto di CMake, e abbiamo avuto un paio di roadbumps interni da altri reparti in cui utilizzare i nostri file di progetto e dove abituato a solo importandoli nelle loro soluzioni. Abbiamo avuto anche alcune denunce di CMake non essere pienamente integrato nel responsabile di progetto di Visual Studio / soluzione, quindi i file dovevano essere aggiunti manualmente al CMakeLists.txt; questa è stata una grande rottura del carattere della gente del flusso di lavoro sono stati usati per.

Ma in generale, è stato un passaggio abbastanza liscia. Siamo molto felici dal momento che non abbiamo a che fare con file di progetto più.

Il flusso di lavoro concreto per l'aggiunta di un nuovo file a un progetto è molto semplice:

  1. Creare il file, assicurarsi che sia nella posizione corretta.
  2. Aggiungi il file da CMakeLists.txt.
  3. Crea.

CMake 2.6 si esegue nuovamente automaticamente se tutti i file CMakeLists.txt sono cambiati (e (semi) ricarica automaticamente le soluzioni / progetti).

Ricordate che se si sta facendo out-of-source costruisce, è necessario fare attenzione a non creare il file di origine nella directory di costruzione (dal Visual Studio conosce solo la cartella di generazione).

Come dice Alex, funziona molto bene. L'unica parte difficile è ricordarsi di apportare eventuali modifiche nei file cmake, piuttosto che all'interno di Visual Studio. Quindi, su tutte le piattaforme, il flusso di lavoro è simile a se avessi usato i vecchi makefiles pianura.

Ma è abbastanza facile da lavorare, e non ho avuto problemi con CMake la generazione di file non validi o qualcosa di simile, quindi non mi preoccuperei troppo.

CMake può generare veramente bello Visual Studio .projs / .slns, ma c'è sempre il problema con la necessità di modificare i file .cmake piuttosto che .proj / .sln. Come è ora, abbiamo a che fare con esso, come segue:

  1. Tutti i file di origine vanno a /src e file visibili in Visual Studio sono solo "link" a loro definite in .filter.
  2. Programmatore aggiunge / cancella i file ricordando di lavorare sulla directory /src definito, non uno del progetto di default.
  3. Quando ha finito, ha eseguito uno script che "rinfresca" i rispettivi file .cmake.
  4. Si controlla se il codice può essere costruito in un ambiente ricreato.
  5. Si impegna il codice.

All'inizio eravamo un po 'paura di come andrà a finire, ma il flusso di lavoro funziona davvero bene e con una bella diff visibile prima di ogni commit, tutti possono facilmente vedere se i suoi cambiamenti sono stati mappati correttamente nei file .cmake.

Una cosa importante da conoscere è la mancanza di supporto ( afaik ) per "Soluzione configurazioni" a CMake. Così com'è, è necessario generare due le directory con progetti / soluzioni - uno per ogni tipo di costruzione (debug, release, etc.). Non v'è alcun supporto diretto per le caratteristiche più sofisticate - in altre parole:. Commutazione tra le configurazioni non vi darà quello che ci si potrebbe aspettare

CMake produce progetti di Visual Studio e soluzioni senza soluzione di continuità. È anche possibile produrre progetti / soluzioni per le diverse versioni di Visual Studio, senza apportare alcuna modifica ai file CMake.

L'aggiunta e la rimozione di file di origine è solo una questione di modificare la CMakeLists.txt che ha la lista dei file di origine e rigenerando i progetti / soluzioni. C'è anche una funzione glob di trovare tutte le fonti in una directory (anche se dovrebbe essere usato con cautela).

Il seguente link spiega CMake e comportamenti specifici Visual Studio molto bene.

CMake e Visual Studio

Ho iniziato il mio progetto, denominato syncProj. Documentazione / scaricare link da qui:

https://docs.google.com/document/d/1C1YrbFUVpTBXajbtrC62aXru2om6dy5rClyknBj5zHU/ Modifica # https://sourceforge.net/projects/syncproj/

Se hai intenzione di utilizzare Visual Studio per lo sviluppo, e attualmente solo C ++ è supportato.

Il vantaggio principale rispetto ad altri sistemi di fare è che si può effettivamente eseguire il debug di script, in quanto è C # base.

Se non hai familiarità con syncProj, si può solo convertire la soluzione / progetto per cs script e continuare a ulteriori sviluppi da quel punto in poi.

In cmake non sarà necessario scrivere tutto da zero.

Un sacco di grandi risposte qui, ma potrebbero essere sostituiti da questo supporto CMake in Visual Studio (5 Ottobre 2016)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top