我正在为一个主要用C++编写的项目集成一个不平凡的跨平台构建系统。到目前为止,我已经评估了Cmake和Scons,尽管它们都相对于(GNU)make有所改进,但两种方法似乎都不是优雅或透明的。
我试图使用这些工具。这使我进入了Boost Build(Bjam),我感到鼓舞的是,由于我的项目依赖于Boost,因此bjam应该适用于任何可行的目标平台
已经。
为了最终集成到Jenkins之类的构建服务器中,试图整齐地集成代码覆盖范围以进行库的单元测试时,我遇到了困难。虽然我愿意接受Bjam最佳/标准实践的指导,但我认为我需要三个不同的“变体”:
本质上,除了标准的调试和发布版本外,我还希望有一个专用的调试版本,它也可以收集coverage数据。
我需要使用(至少)g++和msvc ...进行构建,并且仅将gcov开关与g++一起使用。这意味着我的库目标需要与单元测试可执行目标不同的“compilerflags”……并且仅适用于我的一个编译器套件……并且仅适用于一个变体。
我不清楚如何用Bjam最好地实现这一目标-尽管我怀疑这应该是一个相当普遍的用例。 Bjam是否对gcov覆盖率分析有明确的支持(可能会显示结果)
使用lcov)?如果不是,那么谁能推荐一种可以支持上述(简化)方案的策略?
最佳答案
我非常有信心,第一个问题的答案(bjam是否明确支持gcov)是肯定的否,因为像调试和发布构建配置一样,bjam会将其视为用户的feature variant定义。
对于bjam,看起来有几种方法可以执行您想要的操作:
对于CMake,请考虑遵循ITK的模式:
http://cmake.org/Wiki/ITK/Policy_and_Procedure_for_Adding_Dashboards#Configuring_GCOV_Coverage