2015-03-05 19 views
5

Sto provando a configurare CMake e ninja come un sistema di compilazione per il mio progetto. Tranne l'app stessa, ho un eseguibile aggiuntivo per i test unitari supportato da gtest. Ho pensato che sarebbe stato carino eseguirli automaticamente ogni volta che sono stati creati. Ecco come ho fatto:L'output di GTest non ha colori se costruito con cmake + ninja ed eseguito automaticamente

├── build 
└── source 
    ├── CMakeLists.txt 
    ├── main.cc 
    └── ut 
     ├── CMakeLists.txt 
     ├── gtest 
     │   ├── ... 
     └── ut.cc 

fonte/CMakeLists.txt ...

cmake_minimum_required (VERSION 2.6) 
project (trial) 
add_subdirectory(ut) 
add_executable(trial main.cc) 

... e la fonte/ut/CMakeLists.txt:

add_subdirectory(gtest) 
include_directories ("gtest/include") 

add_executable(ut ut.cc) 
target_link_libraries(ut LINK_PUBLIC gtest_main) 

add_custom_target(run_uts 
        COMMAND ut 
        DEPENDS ut 
        WORKING_DIRECTORY ${CMAKE_PROJECT_DIR} 
       ) 

Ora, quando ho build it, ovvero:

Funziona bene tranne che l'uscita è incolore Quando eseguo l'ut binary a mano, ovvero build/ut/ut, ottengo dei bei colori verdi e rossi. I colori sono anche lì quando uso Unix Makefiles come genrator per CMake.

Dato che sto solo imparando CMake, c'è qualcosa che ho perso o è un problema con Ninja?

risposta

7

Presumo che il codice automatizzato esegua un eseguibile gtest e indirizza l'output in un file. Per impostazione predefinita, gtest aggiunge sequenze di colori solo quando si invia l'output a un terminale. Per forzare l'aggiunta di sequenze di colori all'output inviato a un file oa una pipe, esegui il test eseguibile con --gtest_color=yesoption.

+1

Bene, in realtà il mio codice mette l'output direttamente sul terminale, ma il tuo consiglio è comunque stato d'aiuto! La mia ipotesi migliore è che (secondo questa discussione: https://github.com/martine/ninja/issues/174) ninja lo mette in una pipe qui. Almeno questo spiega perché funziona con i Makefile. –

Problemi correlati