"multiple definition" 的 googletest 符号仅在使用 gradle 在 Travis CI 上编译时
"multiple definition" of googletest symbols only when compiling on Travis CI with gradle
我正在尝试让 Travis CI 工作一些 CI。
所以我用 gtest 和 gradle 设置了一些测试。只有一个测试文件可以完美运行。但是,一旦我添加了第二个,我就会收到大量 multiple definition
错误。它们只是 gtest 符号。最奇怪的是,我无法在任何其他系统上重现这一点。我用 GCC7 尝试了本地 Ubuntu 机器,用 GCC6 尝试了 Debian,用 VS 2015 尝试了 Windows。
我对为什么会出现这些错误以及为什么它们只出现在 Travis CI.
上一无所知
构建日志:https://travis-ci.org/fivunlm/cppstreams/jobs/420067374
Repo(我正在处理的分支):https://github.com/fivunlm/cppstreams/tree/0a89e8f01c9f868a2d690780b2afe159627bd81e
构建文件:https://github.com/fivunlm/cppstreams/blob/0a89e8f01c9f868a2d690780b2afe159627bd81e/build.gradle
编辑:
主要问题是编译错误。不可再现性,只会让调试变得更加困难。
编辑 2:
我刚刚设法在我的 Ubuntu VM 上重新创建了它。不过这还是第一次。我将能够尝试第一手调试它。另外,我将能够回答更深入的问题。
事实证明,我错误地编译了 gtest。罪魁祸首是:https://github.com/fivunlm/cppstreams/blob/0a89e8f01c9f868a2d690780b2afe159627bd81e/lib/build.gradle#L16-L17
相反,它应该只是 include "src/gtest-all.cc"
。该文件包括所有其他来源。
因此,如果您不确定您的 gtest 运行的原因,请确保您只编译 src/gtest-all.cc
。
我正在尝试让 Travis CI 工作一些 CI。
所以我用 gtest 和 gradle 设置了一些测试。只有一个测试文件可以完美运行。但是,一旦我添加了第二个,我就会收到大量 multiple definition
错误。它们只是 gtest 符号。最奇怪的是,我无法在任何其他系统上重现这一点。我用 GCC7 尝试了本地 Ubuntu 机器,用 GCC6 尝试了 Debian,用 VS 2015 尝试了 Windows。
我对为什么会出现这些错误以及为什么它们只出现在 Travis CI.
上一无所知构建日志:https://travis-ci.org/fivunlm/cppstreams/jobs/420067374
Repo(我正在处理的分支):https://github.com/fivunlm/cppstreams/tree/0a89e8f01c9f868a2d690780b2afe159627bd81e
构建文件:https://github.com/fivunlm/cppstreams/blob/0a89e8f01c9f868a2d690780b2afe159627bd81e/build.gradle
编辑:
主要问题是编译错误。不可再现性,只会让调试变得更加困难。
编辑 2:
我刚刚设法在我的 Ubuntu VM 上重新创建了它。不过这还是第一次。我将能够尝试第一手调试它。另外,我将能够回答更深入的问题。
事实证明,我错误地编译了 gtest。罪魁祸首是:https://github.com/fivunlm/cppstreams/blob/0a89e8f01c9f868a2d690780b2afe159627bd81e/lib/build.gradle#L16-L17
相反,它应该只是 include "src/gtest-all.cc"
。该文件包括所有其他来源。
因此,如果您不确定您的 gtest 运行的原因,请确保您只编译 src/gtest-all.cc
。