5

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

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

请注意,介子支持对 gtest/gmock 打包版本的依赖,但这不是我想要的,因为 gtest/gmock 的开发人员不建议这样做。另外,我想流血,因为我疯了⸮</p>

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

4

2 回答 2

7

I tried using the wrap for gtest with

gtest_proj = subproject('gtest')
gtest_dep = gtest_proj.get_variable('gtest_dep')
gmock_dep = gtest_proj.get_variable('gmock_dep')

in meson.build. This builds a local copies of googletest which can then be used like so:

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)

Note that libshield is a shared library created from my (toy) code so I can link to it.

于 2019-08-13T13:36:43.500 回答
7

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

meson wrap search gtest

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

mkdir -p subprojects
meson wrap install gtest

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

meson --reconfigure path/to/build/dir

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

--reconfigure - 从0.49.0开始支持

于 2019-10-20T20:51:02.043 回答