Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[GNU Make] Makefile: запретить параллельный вызов команды
|
|||
|---|---|---|---|
|
#18+
Есть Makefile. Из него собирается некая С++ либа. В процессе сборки необходимо дёргать, помимо всего прочего, генератор исходников . То есть имеем банально такие цели Код: sql 1. 2. от этих исходников соответственно зависят цели объектных файлов. Генератор за один вызов генерит несколько .cpp файлов, а не по одному. При вызове make происходит всё на ура. Проблемы возникают если запустить, например, make -j4 -- запускается параллельно сразу 3 экземпляра source_generator_command, а это не клёво. Достаточно одного вызова, но нужно подождать чтобы генератор отработал. Есть вариант указания псевдо-цели .NOTPARALLEL, но тогда весь Makefile будет собираться в 1 job. Это тоже плохо. Посоветовали ещё .PHONY -- всё отлично работает, source_generator_command вызывается 1 раз, другие job'ы ждут: Код: sql 1. 2. 3. 4. 5. 6. Но если запускать повторно, то каждый раз вызывается генератор и заново генерит исходники (что и ожидалось от .PHONY) -- об инкрементальном билде забываем. Подскажите, знающие люди, как победить такую, казалось бы, никчёмную проблему? P.S. Я не слишком осведомлён о фичах Makefile'ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 22:00 |
|
||
|
[GNU Make] Makefile: запретить параллельный вызов команды
|
|||
|---|---|---|---|
|
#18+
решение "в лоб": вынеси рецепты для всех подобных целей в отдельный makefile с .NOTPARALLEL, а в главном сделай: Код: sql 1. 2. 3. 4. Оно будет запускать вложенный make конечно, но тот будет сразу выходить если делать ему нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 18:31 |
|
||
|
[GNU Make] Makefile: запретить параллельный вызов команды
|
|||
|---|---|---|---|
|
#18+
Сделал как указано в http://www.gnu.org/savannah-checkouts/gnu/automake/manual/html_node/Multiple-Outputs.html последний самый вариант со спинлоками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 21:03 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=71&tid=2019936]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 163ms |

| 0 / 0 |
