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?
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. –