Установите самую надежную версию

Как узнать, какая версия Gtest используется в проекте, с которым я работаю? Я работаю над платформой Linux.

Ответ 1

Исходный код библиотек libgtest или libgtest_main не содержит специальных функций, которые позволяют распознавать их версию (что-то вроде GetGTestVersion () или что-то еще). Также заголовочные файлы не имеют определенных идентификаторов (что-то вроде GTEST_VERSION или что-то еще). Таким образом, вы не можете проверить версию Google C++ Testing Framework во время выполнения внутри кода пользователя.

Но сопровождающие предоставляют как часть специальной script scripts/gtest-conf, которая:

...
provides access to the necessary compile and linking
flags to connect with Google C++ Testing Framework, both in a build prior to
installation, and on the system proper after installation.
...

Помимо всего прочего, этот script имеет несколько опций, связанных с версией:

...
Installation Queries:
...
--version the version of the Google Test installation

Version Queries:
--min-version=VERSION return 0 if the version is at least VERSION
--exact-version=VERSION return 0 if the version is exactly VERSION
--max-version=VERSION return 0 if the version is at most VERSION
...

script также содержит пример использования:

Examples:
gtest-config --min-version=1.0 || echo "Insufficient Google Test version."
...

Это означает, что пользователь может тестировать версию фреймворка во время сборки с помощью script gtest-config.

Примечание

script gtest-config получить фактическую версию структуры во время конфигурации через переменные, объявленные в configure.ac.

...
AC_INIT([Google C++ Testing Framework],
        [1.7.0],
        [[email protected]],
        [gtest])
...

И после вызова autoconf в файле configure заполнены следующие идентификаторы:

...
# Identity of this package.
PACKAGE_NAME='Google C++ Testing Framework'
PACKAGE_TARNAME='gtest'
PACKAGE_VERSION='1.7.0'
PACKAGE_STRING='Google C++ Testing Framework 1.7.0'
PACKAGE_BUGREPORT='[email protected]'
PACKAGE_URL=''
...
# Define the identity of the package.
PACKAGE='gtest'
VERSION='1.7.0'
...

Пока структура, скомпилированная с опцией AC_CONFIG_HEADERS, содержит идентификаторы, хранящиеся в файле build-aux/config.h и доступные пользователю во время компиляции.

Ответ 2

Файл CHANGES в домашнем каталоге gtest содержит номер версии gtest.

Ответ 3

Если вы клонировали официальный репозиторий, вы можете проверить последний коммит Git в каталоге Google Test (например, используя git log -n 1 или git rev-parse HEAD) и сравнить его со списком выпущенных версий.

В моем случае хеш коммита - ec44c6c1675c25b9827aacd08c02433cccde7780, что соответствует версии 1.8.0.