Size: a a a

2021 July 30

AA

AT Aineri in Embedded Group
он помогает подключать другие мейкфайлы - это я понял, но у меня просто файл со строками, где каждая строка - это просто флаг, которыей нужно применить к компиляции, я не могу понять, как это можно соединить друг с другом
источник

YS

Yaroslav Syrytsia in Embedded Group
а можно пример такой строки ?
источник

AA

AT Aineri in Embedded Group
Строки файла выглядят так и их очень очень много:
источник

AA

AT Aineri in Embedded Group
Их просто как флаги нужно подставить в команду сборки
источник

YS

Yaroslav Syrytsia in Embedded Group
в команду сборки, т.е. в gcc ? для каждой строчки сделать -D<flag> ?
источник

AA

AT Aineri in Embedded Group
Грубо говоря
источник

AA

AT Aineri in Embedded Group
Есть переменная CONF, в которой тоже куча флагов своих
источник

AA

AT Aineri in Embedded Group
В баше мы это просто в конец через фор добавляли и подставляли в гцц через ${CONF}
источник

YS

Yaroslav Syrytsia in Embedded Group
нуу... это уже несколько иное :) ИМХО, я бы сделал отдельную цель вроде genconfig которая бы зависела от этого файла, и собственно генерировала бы отдельный хэдер. Это если этих флагов прям очень много. Если не очень, то можно тогда через $(shell ) функцию распарсить этот файл в какую-то одну переменную, и подставлять её как есть в компилятор
источник

AA

AT Aineri in Embedded Group
Ну вот тут закоменчен именно такой вариант - это не работает)
источник

AA

AT Aineri in Embedded Group
По сути, конфигур таргет как раз для того, чтобы рампарсить
источник

AA

AT Aineri in Embedded Group
Я уже часов 5 на этом торчу
источник

YS

Yaroslav Syrytsia in Embedded Group
потому что тут запускается баш, и в контексте баша эти переменные изменяются. Это не будет работать, ибо переменные из дитя в родитель нельзя так просто прокинуть
источник

AA

AT Aineri in Embedded Group
А куда следует посмотреть?
источник

AA

AT Aineri in Embedded Group
Форич уже не баш, но его я тоже не смог завести
источник

YS

Yaroslav Syrytsia in Embedded Group
Например, в $(shell)
источник

YS

Yaroslav Syrytsia in Embedded Group
т.е.
CONF ?= some_default_var
CONF += $(shell <parse config file>)
источник

AA

AT Aineri in Embedded Group
Понял, спасибо, сейчас попробую!
источник

AA

AT Aineri in Embedded Group
Получится чето типа:
CONF+=$(cat path_to_file)
источник

YS

Yaroslav Syrytsia in Embedded Group
На всякий случай, в makefile есть несколько способов вызова баша:
- обратные кавычки, тогда make будет вызывать баш/скрипт всякий раз когда эта переменная используется
- $(shell) функция, make её выполнит один раз при старте, и каждый раз будет подставлять её вывод
источник