【问题标题】:How to set up googletest wtih meson?如何用介子设置谷歌测试?
【发布时间】:2019-12-19 18:05:22
【问题描述】:

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

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

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

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

【问题讨论】:

  • 听起来不错,链接器错误是什么?
  • @FlorianZwoch Err ... 键盘和地板之间的错误。我使用的是this clever hack,这并不是真正需要的。

标签: linux clang googletest ninja meson-build


【解决方案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 是从我的(玩具)代码创建的共享库,因此我可以链接到它。

【讨论】:

    【解决方案2】:

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

    meson wrap search gtest
    

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

    mkdir -p subprojects
    meson wrap install gtest
    

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

    meson --reconfigure path/to/build/dir
    

    您可以在wrap tool 的文档中找到更多信息。

    --reconfigure - 从0.49.0开始支持

    【讨论】:

    • 介子给我一个错误:unrecognized arguments: --reconfigure。然后它继续打印可能参数的列表。他们似乎都没有接近重新配置
    • @Hemil,你的介子版本是什么?
    • @Hemil,从 0.49.0 开始支持
    • 我从突触得到的是 0.45.1 @Umed
    • 从 github 下载最新的 :) 无论如何我让它工作了。谢谢
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 2022-07-27
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多