QMake, SVN получить строку ревизии

75
29 сентября 2021, 14:10

У меня есть 2 способа получить ревизию SVN:

DEFINES += SVN_REVISION1=\\\"$$system(svnversion -n)\\\"
DEFINES += SVN_REVISION2=$$system(svnversion -n $$PWD)

Оба способа рабочие. В первой выдается версия как строка. Во второй после манипуляциями с дефайнами:

#define VALUE_TO_STRING(x) #x
#define VALUE(x) VALUE_TO_STRING(x)
#define SVN_REVISION_STR VALUE(SVN_REVISION)

тоже превращается в строку. И эти 2 способа уходят в отказ, если скопировать проект в папку без SVN. Запуск программы svnversion -n выдает 2 слова: Unversioned directory. Как не уходить в отказ хотя бы по одному способу? Как проверить нахождение в репозитории?

Упрощаю пример:

AA = \\\"Unversioned directory\\\"
BB = \\\"212M\\\"
message($$AA)
message($$BB)

Вывод:

Project MESSAGE: \"Unversioned directory\"
Project MESSAGE: \"212M\"

Как тут избавить от пробела, или обнаружить пробел, или оставить только первое слово?

Answer 1

Решение сделал такое:

AA = $$system(svnversion -n)
equals(AA, "Unversioned directory") {
    DEFINES += SVN_REVISION=\\\"noSVN\\\"
} else {
    DEFINES += SVN_REVISION=\\\"$$AA\\\"
}
READ ALSO
Как можно проще нарисовать радиальный градиент?

Как можно проще нарисовать радиальный градиент?

Есть ли способ проще, чем просто рисовать 240 кругов разного цвета и радиуса? И как рассчитать точное количество пикселей, нужное для каждого...

105
Удалить массив С из памяти

Удалить массив С из памяти

Полный текст задания: Даны два массива А и И одинакового размера NОпределить функцию, возвращающую новый массив С того же размера, каждый...

103