【问题标题】:GTest's output has no colors when built with cmake+ninja and executed automatically使用 cmake+ninja 构建并自动执行时,GTest 的输出没有颜色
【发布时间】:2015-05-07 11:31:38
【问题描述】:

我正在尝试将 CMake 和 ninja 配置为我的项目的构建系统。除了应用程序本身,我还有一个额外的可执行文件,用于由 gtest 提供支持的单元测试。我认为让它们在构建时自动执行会很好。以下是我的制作方法:

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

source/CMakeLists.txt...

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

...和source/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}
                 )

现在当我构建它时,即:

cd build
cmake -GNinja ../source
ninja run_uts

它工作正常,只是输出是无色的。当我手动运行 ut 二进制文件时,即build/ut/ut 我会得到漂亮的绿色和红色。当我使用 Unix Makefiles 作为 CMake 的生成器时,颜色也在那里。

由于我只学习 CMake,有什么我遗漏的或者是 Ninja 的问题吗?

【问题讨论】:

    标签: cmake googletest ninja


    【解决方案1】:

    我假设您的自动化代码运行 gtest 可执行文件并将输出定向到文件。默认情况下,gtest 仅在将输出发送到终端时添加颜色序列。为了强制它向发送到文件或管道的输出添加颜色序列,请使用 --gtest_color=yes option 运行您的测试可执行文件。

    【讨论】:

    • 好吧,实际上我的代码将输出直接发送到终端,但你的建议还是有帮助的!我最好的猜测是(根据这个线程:github.com/martine/ninja/issues/174)忍者把它放到这里的管道中。至少这解释了为什么它可以与 Makefile 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2016-07-09
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多