2012-04-10 16 views
10

Sembra che abbiamo bisogno di creare una cartella separata per ogni tipo di build (debug/release), eseguire cmake su ognuno e generare un makefile separato per la configurazione di debug/release. È possibile creare un singolo makefile usando cmake che supporta sia la configurazione di debug/release allo stesso tempo sia quando eseguiamo effettivamente "make" che creerà cartelle separate per i prodotti intermedi e finali (come le dll, exe).Can Cmake genera un singolo makefile che supporta sia il debug che il rilascio

risposta

8

Per quanto ne so, questo non può essere ottenuto utilizzando un singolo set di script di compilazione. Tuttavia, ciò che si può fare è avere due sotto-directory della vostra zona di lavoro:

build/ 
build/debug 
build/release 

Poi fare:

$ cd build 
$ 
$ cd build/debug 
$ cmake -DCMAKE_BUILD_TYPE=Debug ../.. 
$ make 
$ 
$ cd ../release 
$ cmake -DCMAKE_BUILD_TYPE=Release ../.. 
$ make 

Se necessario, è possibile aggiungere un altro script di build nella directory build in quanto tale:

#!/bin/sh 
cd debug && make && cd .. 
cd release && make && cd .. 
+0

E il file sln di Visual Studio, genera anche solo il debug o solo la configurazione di rilascio o supporta entrambi nello stesso file .sln? – user243655

+1

@ user243655: Sembra generare più configurazioni: 'Debug',' Release', 'MinSizeRel' e' RelWithDebInfo'. –

+0

Grazie mille per le informazioni. – user243655

1

Questo può essere ottenuto utilizzando il comando ADD_CUSTOM_TARGET. Ad esempio, se si desidera aggiungere sia il debug e gli obiettivi di rilascio nel makefile, aggiungere il seguente al file CMakeLists.txt:

ADD_CUSTOM_TARGET(debug 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the debug mode.") 

ADD_CUSTOM_TARGET(release 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the release mode.") 

Poi, dopo aver configurato con CMake, è possibile eseguire make debug a fare l'obiettivo di debug ed eseguire make release per rendere la destinazione di rilascio nella stessa directory.

Problemi correlati