Перейти к содержанию
    

Передать строку компилятору GCC из Python-овского скрипта сборки

Скрипт сборки проекта написан на Python, сам Питоном не владею, был взят из демо проекта. Требуется передать компилятору GCC строку - короткий хэш git версии проекта.  Саму строку  в скрипте получаю так.

def get_git_revision_short_hash() -> str:
    return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD']).decode('ascii').strip()

GIT_REV = get_git_revision_short_hash()

print(GIT_REV)

контрольный print выводит именно то , что нужно. Пытаюсь передать строку компилятору так

CFLAGS += ' -DGIT_REV=' + GIT_REV

В проекте использую так

LOG_I("Git Revision:%s", GIT_REV);

где LOG_I - макрос rt-thread, выводящий сообщения в UART.

Компилятор дает ошибку:

<command-line>: error: 'fa23128' undeclared (first use in this function)

fa23128 - hash git-версии проекта.

да, питон версия 3

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кавычки забыли. Он ваш хэш воспринимает как идентификатор

Как-то так: 

CFLAGS += ' -DGIT_REV="' + GIT_REV + '"' 

или как там у них, земноводных, принято

scons поди?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, MrYuran said:

кавычки забыли. Он ваш хэш воспринимает как идентификатор

Подскажите где именно кавычки. Я игрался с кавычками и двойными и одинарными - не вышло.  О том, что воспринимает как идентификатор - догадываюсь...

14 minutes ago, MrYuran said:

кавычки забыли. Он ваш хэш воспринимает как идентификатор

Как-то так: 

CFLAGS += ' -DGIT_REV="' + GIT_REV + '"' 

или как там у них, земноводных, принято

<command-line>: error: 'fa23128' undeclared (first use in this function)

14 minutes ago, MrYuran said:

CFLAGS += ' -DGIT_REV="' + GIT_REV + '"'

или как там у них, земноводных, принято

scons поди?

ага, scons

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 minutes ago, nanorobot said:

Подскажите где именно кавычки. Я игрался с кавычками и двойными и одинарными - не вышло.  О том, что воспринимает как идентификатор - догадываюсь...

<command-line>: error: 'fa23128' undeclared (first use in this function)

ага, scons

 
Для этой цели все, что стоит после -D в командной строке, нужно заключить в одинарные кавычки. Например:

CPPFLAGS += -D'DHCPD_SERVER_IP="192.168.4.1"'

Вычитал это(вверху) - надо еще как то одинарных кавычек добавить, ... Но вот как это сделать .. впрочем не уверен что причина здесь - судя по выхлопу компилятора.

 

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...