2015-03-05 14 views
5

CMake ve ninja'yı projem için bir yapı sistemi olarak yapılandırmaya çalışıyorum. Uygulamanın kendisi dışında gtest tarafından desteklenen birim testleri için ek bir çalıştırılabilirim var. Her inşa edildiklerinde otomatik olarak idam edilmelerinin iyi olacağını düşündüm. İşte ben yaptım nasıl:GTest'in çıktısı cmake + ninja ile oluşturulduğunda hiçbir renk içermiyor ve otomatik olarak çalıştırılıyor

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

kaynak/CMakeLists.txt ...

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

... ve kaynak/ut/CMakeLists.txt: Artık

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} 
       ) 

zaman inşa et, yani:

cd build 
cmake -GNinja ../source 
ninja run_uts 

Bu çıktılar dışında iyi çalışıyor renksizdir. İK binary'yi elle çalıştırdığımda, yani build/ut/ut Güzel yeşil ve kırmızı renkler elde ederim. Unix Makefiles'i CMake için bir sunucu olarak kullandığımda renkler de var.

Sadece CMake öğreniyorum, özlediğim bir şey var mı, yoksa Ninja ile ilgili bir sorun mu var?

cevap

7

Otomatik kodunuzun bir çalıştırılabilir dosyayı çalıştırdığını ve çıktıyı bir dosyaya yönlendirdiğini varsayalım. Varsayılan olarak, gtest renk dizilerini yalnızca bir terminale gönderim yaparken ekler. Bir dosyaya veya bir boruya gönderilen çıktıya renk dizileri eklemeyi zorlamak için, test uygulamanızı --gtest_color=yesoption ile çalıştırın.

+1

Aslında, aslında benim kod çıkışını doğrudan terminale veriyor, ancak tavsiyeniz yine de yardımcı oldu! En iyi tahminim şudur: (bu konuya göre: https://github.com/martine/ninja/issues/174) ninja burada bir boruya koyar. En azından bu, Makefiles ile neden çalıştığını açıklıyor. –