如何使用介子设置 googletest?

Sar*_*ica 3 linux clang googletest ninja meson-build

我有一个带有一些 C++ 测试代码的 git 存储库,我想使用Googletest编写一些测试。我曾经git submodule把它作为上述存储库的一部分。我想使用介子作为构建引擎。到现在为止还挺好。

但是,我无法理解如何让介子构建和链接我的测试与 googletest 子模块......我应该使用包装吗?外部依赖?什么?

请注意,介子支持对打包版本的 gtest/gmock 的依赖,但这不是我想要的,因为 gtest/gmock 的开发人员建议反对它。另外,我想要最前沿的,因为我疯了?

此外,我不认为忍者在这里起作用,但我提到我使用它以防万一。

小智 6

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

meson wrap search gtest
Run Code Online (Sandbox Code Playgroud)

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

mkdir -p subprojects
meson wrap install gtest
Run Code Online (Sandbox Code Playgroud)

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

meson --reconfigure path/to/build/dir
Run Code Online (Sandbox Code Playgroud)

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

--reconfigure - 从0.49.0 开始支持


Sar*_*ica 5

我尝试使用wrap for gtest with

gtest_proj = subproject('gtest')
gtest_dep = gtest_proj.get_variable('gtest_dep')
gmock_dep = gtest_proj.get_variable('gmock_dep')
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

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