我正在使用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的一部分会起作用吗?
任何帮助都是非常感谢的!
发布于 2011-08-11 04:10:46
编译速度慢的原因是因为boost/test/included/unit_test.hpp非常庞大。使用库可以加快速度,因为巨大的头文件是在构建库时编译的,而不是之后编译的。然后,您的测试包括一组较小的标头,从而缩短构建时间。
因为我懒得构建这个库,所以我使用的另一种选择是让一个源文件(它永远不会更改,因此很少重新构建)包含完整的boost测试,然后让所有真正的测试源只包含boost/test/unit_test.hpp。这提供了使用该库的大部分好处。
发布于 2011-08-11 00:07:08
尝试使用预编译头,这应该会减少编译时间。详情可在此处找到:http://www.boost.org/boost-build2/doc/html/bbv2/reference/precompiled_headers.html
发布于 2021-04-23 17:40:55
我相信所有的选项现在都在官方文档中进行了描述(参见)。
非常方便,并且大大减少了编译时间。如上所述,可以创建只包含两行代码的单个源文件,单独编译该文件,并将其与其他测试链接起来。
关于链接文档的注释。我认为该页面中有一个错误,即这里:
One和only one转换单元应包括以下行:
#定义单元测试模块名称#include
这会在链接阶段导致“未定义的引用”错误。我认为应该是:
#define BOOST_TEST_MODULE test module name
#include <boost/test/included/unit_test.hpp>https://stackoverflow.com/questions/7013121
复制相似问题