在 MacOS 上使用 CLion+Boost 简易教程
最近要用 C 写一个比较大的项目,里面有非常多的模块,而且不容易整个项目一起跑,于是准备使用 CLion + Boost 来进行单元测试,搭建环境花了挺久的,记一下吧!
一、选型
CLion说它支持 BoostTest ,支持GoogleTest ,支持CatchFramework 。这里我代码是用 c 写的,查了一下好像说用 BoostTest 最方便,也没多想,就用了 Boost,可能另外两个也不错吧!
二、安装 Boost
不废话,一句就可以了
1 | brew install boost |
具体装到哪,好像就是最常见的那个地方,可能因为使用 brew 的人太多了,导致当今的 CMake 都会默认从那里面寻找组件,所以这里可以认为是装好了。
三、在 CLion 中使用
1 | 因为我不大会 boost 的语法,所以只能给一些简单的案例,先修改 CMake。 |
注意第三行,这里一定要将单元测试编译为可执行文件,因为boost的设计似乎不是去加载 library(static 和 shared 都是不可以的),而是执行可执行程序,因为会出这个报错。
1 | 11:44Error running 'nothing': Cannot run program "/Users/leadroyal/CLion_code/boost_demo/cmake-build-debug/libboost_wrapper.a" (in directory "/Users/leadroyal/CLion_code/boost_demo/cmake-build-debug"): error=13, Permission denied |
这里写一个简单的 cpp 代码,需要注意的一点是,boost 提供的 API本身是针对 cpp 写的,所以一定要用 boost_wrapper.cpp 不能用 boost_wrapper.c ,不然宏定义会挂,无法编译通过。而又会有一个问题,cpp 里的函数声明和 c 里的函数声明有不一致的地方,可能差几个字节或者下划线,所以如果 cpp 去包含 c 的头文件,一定要处理好,加上 extern "C" 的标记,这里只有单个文件,所以没关系。
1 | // |
之后在 BOOST_AUTO_TEST_CASE 左边会出现一个绿绿的剪头,点击就可以让 CLion 帮我们测试了。 整个目录结构是:
1 | ➜ boost_demo lsa |
四、效果
非常友好!
五、其他 tips
编译链接时候会很卡,因为链接出来的东西可能比较大吧,耐心一点。