我正在尝试将CMake和ninja配置为我项目的构建系统。除了应用程序本身,我有一个额外的可执行文件,用于由gtest驱动的单元测试。我认为让它们在构建时自动执行会很好。这是我如何做到的:
├── build
└── source
├── CMakeLists.txt
├── main.cc
└── ut
├── CMakeLists.txt
├── gtest
│ ├── ...
└── ut.cc
源/的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的问题?
答案 0 :(得分:10)
我假设您的自动代码运行gtest可执行文件并将输出定向到文件。默认情况下,gtest仅在将输出发送到终端时才添加颜色序列。为了强制它将颜色序列添加到发送到文件或管道的输出,请使用--gtest_color=yes
option运行测试可执行文件。