我正在使用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的部分工作吗?
非常感谢任何帮助!
答案 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>