Ich versuche CMake und Ninja als Build-System für mein Projekt zu konfigurieren. Außer der App selbst habe ich eine zusätzliche ausführbare Datei für Komponententests, die von gtest unterstützt werden. Ich dachte, es wäre nett, wenn sie automatisch ausgeführt würden, wenn sie gebaut würden. Hier ist, wie ich es gemacht:GTest Ausgabe hat keine Farben, wenn mit cmake + Ninja gebaut und automatisch
├── build
└── source
├── CMakeLists.txt
├── main.cc
└── ut
├── CMakeLists.txt
├── gtest
│ ├── ...
└── ut.cc
Quelle/CMakeLists.txt ...
cmake_minimum_required (VERSION 2.6)
project (trial)
add_subdirectory(ut)
add_executable(trial main.cc)
... und Quelle/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}
)
Jetzt
als ich bau es, dh:
cd build
cmake -GNinja ../source
ninja run_uts
Es funktioniert gut, außer dass die Ausgabe ist farblos. Wenn ich die UT-Binärdatei von Hand laufen lasse, d. H. build/ut/ut
, bekomme ich schöne grüne und rote Farben. Die Farben sind auch da, wenn ich Unix Makefiles als Generator für CMake benutze.
Da ich nur CMake lerne, gibt es etwas, das ich vermisst habe oder ist es ein Problem mit Ninja?
Nun, tatsächlich bringt mein Code die Ausgabe direkt zum Terminal, aber Ihr Rat half trotzdem! Meine beste Vermutung ist, dass (nach diesem Thread: https://github.com/martine/ninja/issues/174) Ninja es hier zu einer Pipe bringt. Zumindest erklärt das, warum es mit Makefiles funktioniert. –