如何通过介子设置googletest?

时间:2019-08-13 07:52:40

标签: linux clang googletest ninja meson-build

我有一个git存储库,其中包含一些C ++中的测试代码,并且我想使用Googletest编写一些测试。我使用git submodule将其作为上述存储库的一部分。我想使用meson作为构建引擎。到目前为止,一切都很好。

但是,我无法理解如何让介子来构建测试并将其与googletest子模块链接...我应该使用自动换行吗?有外部依赖吗?什么?

请注意,meson supports dependencies on packaged versions of gtest/gmock并不是我想要的,因为gtest / gmock的开发人员建议不要这样做。另外,我想流血的边缘,因为我疯了⸮

此外,我不认为忍者在这里扮演角色,但我提到我只是为了以防万一。

2 个答案:

答案 0 :(得分:2)

如果要使用不是介子项目的项目,则需要在wrapDB中找到该项目:

meson wrap search gtest

如果该命令为您提供了自动换行的名称,那么您需要将其安装到您的项目中:

meson wrap install gtest

然后,您应该重新配置项目,介子将为您下载该项目:

meson --reconfigure path/to/build/dir

您可以在wrap tool的文档中找到其他信息。

-重新配置-自0.49.0

开始受支持

答案 1 :(得分:1)

我尝试将the wrap for gtest

一起使用
gtest_proj = subproject('gtest')
gtest_dep = gtest_proj.get_variable('gtest_dep')
gmock_dep = gtest_proj.get_variable('gmock_dep')
meson.build

。这将建立googletest的本地副本,然后可以像这样使用它:

tests_src = [
  'tests/gtest-all.cpp',
  'tests/test_MyClass.cpp',
]  
e = executable(
  'gtest-all',
  tests_src,
  dependencies : [
    gtest_dep,
    gmock_dep],
  link_with : libshield,
)    
test('gtest tests', e)

请注意,libshield是一个由我(玩具)代码创建的共享库,因此我可以链接到它。