【发布时间】:2014-10-29 20:36:31
【问题描述】:
正如问题所说,当使用带有 boost.test 的“c/c++ 单元”运行配置时,我无法在 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
- 我在eclipse中打开项目,进入c++透视图
- 然后我通过双击 make 目标(quickEclipse_stdout、quickEclipse_stdout_test)来构建可执行文件
- 我开始运行配置并为 quickEclipse_stdout 创建“c/c++ 应用程序”。
- 我转到运行配置并为 quickEclipse-stdout_test 创建“c/c++ 单元”并选择 boost 作为测试运行器。
- 我运行 quickEclipse_stdout 并在 Eclipse 控制台中查看输出。
- 我运行 quickEclipse_stdout_test 并且 Eclipse 控制台是空的。我在 c/c++ 单元消息选项卡中看到了该消息。
- 如果我在 Eclipse 之外的终端中运行可执行文件,我可以在两者上看到 std::out。
在运行 quickEclipse_stdout_test 时,如何让 std::out 在 Eclipse 控制台中显示?
我在 Linux CentOS 6.5 上。
Eclipse 标准/SDK 版本:开普勒服务版本 1 内部版本号:20130919-0819
Eclipse C/C++ 开发工具 版本:8.2.1.201309180223
【问题讨论】:
标签: c++ eclipse boost cmake cout