编译Boost.Test测试更快

时间:2011-08-10 15:09:25

标签: c++ testing boost build

我正在使用xcode(gcc)编译我的boost测试套件,这需要很长时间。

测试是最小的虚拟测试,但编译它们需要几秒钟(大约20秒):

#include "boost/test/included/unit_test.hpp"

BOOST_AUTO_TEST_CASE(dummy)
{
    BOOST_CHECK_EQUAL(2+2, 4);
}

BOOST_AUTO_TEST_CASE(dummyFail)
{
    BOOST_CHECK_EQUAL(2+3, 4);
}

本手册建议使用库版本来加速编译。但是,我担心这可能不起作用 - xcode只能重建我的测试。由于存在目标文件,因此不会再次编译整个框架。

我猜这是Boost.Test中的头文件和模板的数量,它们负责大部分编译时间。

您是否知道如何更快地编译?将它用作图书馆工作吗?只包括boost.test的部分工作吗?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:8)

编译速度慢的原因是因为boost/test/included/unit_test.hpp很大。使用库使其更快,因为在构建库时编译了大的头,而不是之后。然后,您的测试包含一组较小的标题,从而缩短构建时间。

因为我懒得构建库,我使用的替代方法是拥有一个源文件(永远不会更改,因此很少重建)包括完整的boost测试,然后进行所有真正的测试来源仅包括boost/test/unit_test.hpp。这提供了使用该库的大部分好处。

答案 1 :(得分:2)

尝试使用预编译头文件,这会减少编译时间。详细信息可以在这里找到: http://www.boost.org/boost-build2/doc/html/bbv2/reference/precompiled_headers.html

答案 2 :(得分:0)

我相信现在官方文档中描述了所有选项(请参阅Usage variants)。

Static library usage variant 非常方便,大大减少了编译时间。 如那里所述,您可以创建一个仅包含两行的源文件,单独编译并将其与其他测试链接。

关于链接文档的评论。 我相信那个页面有错误,即这里:

<块引用>

一个且只有一个翻译单元应包括以下几行:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL+"t");
driver.get("https://login.yahoo.com/");

这会导致链接阶段出现“未定义引用”错误。 我认为应该改为:

#define BOOST_TEST_MODULE test module name
#include <boost/test/unit_test.hpp>