LINUX.ORG.RU

Хочу версию из гита

 , ,


1

2

Юзаю вот что:

include(GetGitRevisionDescription)
git_describe(VERSION_LONG)

#parse the version information into pieces.
string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${VERSION_LONG}")
string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${VERSION_LONG}")
string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${VERSION_LONG}")
string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+(.*)" "\\1" VERSION_SHA1 "${VERSION_LONG}")
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")

git_describe возвращает в CMake вывод git describe. Возвращает верно. Но при этом в VERSION лежит не распарсенный вывод, а тупо утроенная VERSION_LONG. Как фиксить?

★★

Последнее исправление: Athor (всего исправлений: 1)

Вроде, нужно добавить ″$″ в конец регекспа. Что именно содержится в VERSION_LONG?

mky ★★★★★
()
Ответ на: комментарий от Athor

так и строка типа 0.1.2-25-shashasha

А где буква ″v″, которая в начале регекспа? Если её дествительно нет, уберите её из регекспа, или поставьте после неё звёздочку.

mky ★★★★★
()

Никогда так не делай. Во-первых, в любом ебилде/pkgбилде/порте/... эту ересь сразу вырежут чтобы софтина не тянула по build-зависимостям git (только ради номера версии, блджад!). Во-вторых, посмотрю я что с ней будет когда я скачаю тарбол вместо репозитория и .git там не будет. А ещё лучше, когда она подхватит .git на несколько уровней каталогов выше от моего репозитория с портами.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

на этот случай (не нахождения гита) можно сделать fallback_version. Мне б сделать скрипт, который автоматически по гит тегу заносил версию в CMakeLists.txt... Кстати, папку .git я в тарболл стараюсь класть.

Athor ★★
() автор топика
Ответ на: комментарий от slovazap

Кстати, по теме - как заставить гитхаб отдавать полный тарболл, а то у меня там кое-что сабмодулями, но оно не отдается в тарболл и проекты не компилятся?

Athor ★★
() автор топика
Ответ на: комментарий от slovazap

Значит, тарболлы все равно придется собирать руками и впиливать в них номер версии тоже руками.

Athor ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.