Boost.Test 静态链接 (Static Link)

文章 C++ Unit Testing With Boost.Test 中用了动态链接的方法,但没有提及静态链接的 方式怎么使用,自己尝试了一下,将一些需要注意地方记录在这。

静态链接的使用大体上的动态链接一样,只是不需要宏定义:

1
#define BOOST_TEST_DYN_LINK

还需要注意一下编译时的参数项,和参数的顺序。以测试 STL 函数 any_of 为例:

1
2
3
4
5
6
7
8
9
10
11
12
// #define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE Suites
#include <boost/test/unit_test.hpp>

#include <algorithm>
#include <vector>

BOOST_AUTO_TEST_CASE(universeInOrder)
{
std::vector<int> v{1,2,3,4,5,6};
BOOST_REQUIRE(std::any_of(v.begin(), v.end(), [](int i){ return i == 3; }));
}

使用以下命令进行编译:

1
clang++ -std=c++11 -static demo.cc -lboost_unit_test_framework

这里使用了 clang++ 进行编译,应该可以直接替换为 g++ 而没有影响。必要的参数有 -static-lboost_unit_test_framework ,因为使用了 C++11 的特性所以加了参数 -stc=c++11 。需要注意文件名 demo.cc 要在参数 -lboost_unit_test_framework 之前,原因请参见文末链接1, 2,其他参数的位置经我测试没有特殊要求。

Last Updated 2018-05-26 Sat 14:12.
Render by hexo-renderer-org with Emacs 25.2.2 (Org mode 9.1.13)
0%