«множественное определение» символов googletest только при компиляции в Travis CI с gradle - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь заставить работать некоторого КИ на Трэвисе.
Поэтому я настроил некоторые тесты с помощью gtest и gradle. Только один тестовый файл работал безупречно. Однако, как только я добавил второе, я получаю тонны multiple definition ошибок. И это только лучшие символы. Самое странное, что я не могу воспроизвести это ни в одной другой системе. Я попробовал свою локальную машину с Ubuntu с GCC7, Debian с GCC6 и Windows с VS 2015.

Я довольно не понимаю, почему эти ошибки появляются и почему они появляются только в Travis CI.

Журнал сборки: https://travis -ci.org / fivunlm / cppstreams / jobs / 420067374
Репо (ветка, над которой я работаю): https://github.com/fivunlm/cppstreams/tree/0a89e8f01c9f868a2d690780b2afe159627bd81e
Файл сборки: https://github.com/fivunlm/cppstreams/blob/0a89e8f01c9f868a2d690780b2afe159627bd81e/build.gradle

Edit:

Основная проблема - ошибка компиляции. Невоспроизводимость просто усложняет отладку.

Редактировать 2:

Мне только что удалось воссоздать его на моей Ubuntu VM. Впрочем, это впервые. Я смогу попробовать отладить это из первых рук. Также я смогу ответить на более глубокие вопросы.

1 Ответ

0 голосов
/ 24 августа 2018

Как оказалось, я неправильно компилировал gtest.Виновник таков: https://github.com/fivunlm/cppstreams/blob/0a89e8f01c9f868a2d690780b2afe159627bd81e/lib/build.gradle#L16-L17

Вместо этого должно быть просто include "src/gtest-all.cc".Файл включает в себя все другие источники.

Так что, если вы не уверены, почему ваш gtest работает, убедитесь, что вы компилируете только src/gtest-all.cc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...