gpt4 book ai didi

c++ - 使用 boost.test 时如何让 std::cout 显示在 eclipse IDE 控制台中?

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:29 25 4
gpt4 key购买 nike

如问题所述,当使用带有 boost.test 的“c/c++ unit”运行配置时,我无法在 eclipse 控制台中看到 std::out 语句。

这是一个描述问题的简单示例。

quickEclipse_stdout.cpp:

#include <iostream>
int main(int argc, char* argv[])
{
std::cout << "I see this in the eclipse console!\n";
std::cout << "I also see this in the terminal!\n";
return(0);
}

quickEclipse_stdout_test.cpp:

#include <iostream>
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_SUITE(quickTest_stdout)

BOOST_AUTO_TEST_CASE(bla)
{
std::cout << "I cannot see this in the eclipse console" << std::endl;
std::cout << "but I can see it when run outside eclipse in terminal" << std::endl;

BOOST_CHECK_MESSAGE(true, "of course I see this in eclipse c/c++ test log");
}

BOOST_AUTO_TEST_SUITE_END()

我使用 cmake 为 eclipse 生成项目文件。

CMakeLists.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(quickTest CXX)

FIND_PACKAGE(Boost COMPONENTS program_options filesystem regex unit_test_framework)
IF (Boost_FOUND)
MESSAGE("Boost found!!!")
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
ADD_DEFINITIONS( "-DHAS_BOOST" )
ENDIF()

#main output to console works
ADD_EXECUTABLE(quickEclipse_stdout, quickEclipse_stdout.cpp)

#boost.test output to console doesnt work
ADD_EXECUTABLE(quickEclipse_stdout_test UTDriver.cpp quickEclipse_stdout_test.cpp)
TARGET_LINK_LIBRARIES(quickEclipse_stdout_test ${Boost_LIBRARIES})

UTDriver.cpp:

#define BOOST_TEST_MODULE myQuickEclipseUT
#define BOOST_TEST_MAIN
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

要生成 eclipse 项目,我运行以下命令:

cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_ECLIPSE_VERSION=4.3 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER_ARG1=-std=c++11 ~/mySrcDir
  1. 我在eclipse中打开项目,进入c++透视
  2. 然后我通过双击 make 目标(quickEclipse_stdout、quickEclipse_stdout_test)构建可执行文件
  3. 我转到运行配置并为 quickEclipse_stdout 创建“c/c++ 应用程序”。
  4. 我转到运行配置并为 quickEclipse-stdout_test 创建“c/c++ 单元”并选择 boost 作为测试运行器。
  5. 我运行 quickEclipse_stdout 并在 Eclipse 控制台中查看输出。
  6. 我运行 quickEclipse_stdout_test,但 eclipse 控制台是空的。我在 c/c++ 单元消息选项卡中看到消息。
  7. 如果我在 eclipse 之外的终端中运行可执行文件,我可以在两者上看到 std::out。

如何在运行 quickEclipse_stdout_test 时让 std::out 显示在 eclipse 控制台中?

我在 Linux CentOS 6.5 上。

Eclipse 标准/SDK版本:Kepler Service Release 1构建 ID:20130919-0819

Eclipse C/C++ 开发工具版本:8.2.1.201309180223

最佳答案

我确定根据您的描述,它会将 stdout 重定向到它自己的窗口以进行测试

关于c++ - 使用 boost.test 时如何让 std::cout 显示在 eclipse IDE 控制台中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25676585/

25 4 0
文章推荐: java - 按钮中的图像模糊,按钮忽略 setSize
文章推荐: jquery - 如何使用 jQuery 选择
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com