Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.UNIX.BSD
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.UNIX.BSD с датами от 18 Jan 11 22:51:00 до 16 Sep 24 17:28:15, всего сообщений: 10763
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 7351 из 10763 ===================================== RU.UNIX.BSD =
От   : Eugene Grosbein                  2:5006/1           11 May 18 15:02:15
Кому : Victor Sudakov                                      11 May 18 15:02:15
Тема : Re: Makefile
FGHI : area://RU.UNIX.BSD?msgid=grosbein.net+1a9c2489
На   : area://RU.UNIX.BSD?msgid=2:5005/49+5af4fd89
= Кодировка сообщения определена как: IBM866 =================================
Ответ: area://RU.UNIX.BSD?msgid=2:5005/49+5af54826
==============================================================================
11 мая 2018, пятница, в 06:37 NOVT, Victor Sudakov написал(а):

VS> Как правильно написать Makefile на тот случай, если программа генерирует
VS> одновременно два файла, чтобы при этом она не запускалась дважды даже при -j2 и
VS> больше?
VS> ==============================================================
VS> .MAKE.JOBS= 2
VS> all: result
VS> foo bar: source
VS>         touch foo bar
VS> result: foo bar
VS>         cat foo bar > result
VS> clean:
VS>         rm -f foo bar result
VS> ==============================================================
VS> Вышеприведенный пример запускает touch дважды.

Решение зависит от того, почему именно мы не хотим запускать touch дважды,
так как лекарство не должно быть хуже болезни.

Hапример, такой вариант (не тестировал):

.MAKE.JOBS?=     2
all:    result

foo: source
.if ( ${.MAKE.JOBS} = 1 )
        touch foo bar
.else
        make -j1 foo bar
.endif

bar: foo
[ -f $@ ] || make -j1 foo

Eugene
--
Choose no life
--- slrn/1.0.2 (FreeBSD)
* Origin: RDTC JSC (2:5006/1@fidonet)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.085820 секунды