Mi sembra che la variabile CMAKE_GENERATOR
sia impostata troppo tardi se impostata su CMakeLists.txt
. Se si utilizza (anche all'inizio di CMakeLists.txt
)
set(CMAKE_GENERATOR "Ninja")
message("generator is set to ${CMAKE_GENERATOR}")
potete vedere nell'output qualcosa come
% cmake ../source
-- The C compiler identification is GNU 4.9.2
...
-- Detecting CXX compile features - done
generator is set to Ninja
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/build
Quindi la variabile è impostata solo alla fine della procedura di generazione. Se si usa qualcosa come
set(CMAKE_GENERATOR "Ninja" CACHE INTERNAL "" FORCE)
in CMakeLists.txt
, poi nel primo run di cmake ../source
(senza -G
) viene utilizzato il generatore predefinita. La variabile CMAKE_GENERATOR
è tuttavia memorizzata nella cache. Quindi, se si esegue nuovamente cmake ../source
, verrà utilizzato il generatore come specificato nella variabile CMAKE_GENERATOR
nella cache.
Questo non è sicuramente la soluzione più elegante, anche se ;-) Forse utilizzare un file batch che realmente eseguire il cmake -G generator
per l'utente ...
fonte
2015-04-23 09:34:42
perché sto usando uno strumento a catena su misura, e non ho VC++ installato, non può contare su CMake selezione di un generatore. Inoltre, non so cosa specificarne uno sulla riga di comando in modo che sia facile per l'utente clonare e creare il progetto. – Ted
Ok ... scusa ho frainteso la tua domanda.In tal caso, raccomanderei di inserire un CMakeCache.txt nella directory, che è per lo più vuoto ma per la variabile CMAKE_GENERATOR. Oppure potresti avere quel file di cache nel tuo repository di origine e passarlo usando l'opzione -C cmake. – Frank