【问题标题】:Why is it recommended to include googletest source files为什么建议包含 googletest 源文件
【发布时间】:2019-03-19 09:32:37
【问题描述】:

只是一个简短的问题, 为什么建议在每个项目中通过包含源文件来编译 googletest 和 googlemock(而不是使用 cmake 以 '.a' 扩展名存档库,然后将其链接到许多项目)。

来源:https://www.jetbrains.com/help/clion/creating-google-test-run-debug-configuration-for-test.html

【问题讨论】:

  • 似乎那里的推荐是基于断开的链接。谷歌测试常见问题解答不再包含这样的建议(无论如何我都找不到)。

标签: c++ cmake googletest googlemock


【解决方案1】:

因为 googletest 生成的“.a”文件会根据编译器标志而有所不同。您要创建的不同测试项目可能会以不同方式设置这些设置,如果它们引用通用的 googletest '.a' 文件,这可能会导致问题。

来自'make install' considered harmful

在 gtest 和 gmock 的 README 文件中,我们说您可以安装 使用 'make 在 *nix 系统上编译 gtest 和 gmock 库 安装'。然后,您机器的每个用户都可以编写测试,而无需 重新编译 gtest 或 gmock。

当我们编写自述文件时,这似乎是个好主意,但它有一个 got-cha:每个用户都需要使用相同的编译器来编译他的测试 用于编译已安装的 gtest/gmock 库的标志;否则 他可能会遇到未定义的行为(即测试可以表现 奇怪,甚至可能无缘无故崩溃)。

【讨论】:

  • 即使我们确实接受了风险/陷阱(例如,因为我们项目中的每个人都使用相同的构建环境),我们仍然需要将包含文件添加到我们的项目中。那是对的吗?或者有没有办法避免这种情况?其次,鉴于现在 docker 的使用非常普遍,是否期望用户希望使用定义明确的编译器标志和库来启动容器,以便工程师可以大部分时间专注于编码方面?
猜你喜欢
  • 2021-06-25
  • 1970-01-01
  • 2014-09-11
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
相关资源
最近更新 更多