Jump to content
    

Передать строку компилятору 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

Edited by nanorobot

Share this post


Link to post
Share on other sites

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

Как-то так: 

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

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

scons поди?

Share this post


Link to post
Share on other sites

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

Edited by nanorobot

Share this post


Link to post
Share on other sites

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"'

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

 

Edited by nanorobot

Share this post


Link to post
Share on other sites

GIT_REV = 'fa23128'

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...