clearmake не любит мои значения MAKEFLAGS = j12 - PullRequest
1 голос
/ 21 июня 2020

Я использую и GNU Make, и - горе мне - ClearCase 'clearmake.

Теперь GNU уважает флаг с именем MAKEFLAGS, который для меня установлен на j20 на этом многоядерном машина я нахожусь. К сожалению, clearmake также распознает эту опцию, но не исключает ее. Он сообщает мне:

clearmake: Error: Bad option (j)
clearmake: Error: Bad option (2)
clearmake: Error: Bad option (0)

Вопросы:

  1. Почему это происходит? Должен ли ClearMake адаптироваться к использованию GNU Make?
  2. Как я могу обойти это, кроме повторного включения и выключения флага?

Ответы [ 3 ]

1 голос
/ 21 июня 2020

Прошло около 15 лет с тех пор, как я использовал clearmake, но при условии, что он не поддерживает GNU make-specifici c GNUMAKEFLAGS переменную , вы можете использовать:

export GNUMAKEFLAGS=-j20

и оставьте MAKEFLAGS не заданным.

0 голосов
/ 22 июня 2020

Вы вызываете GNU make из скрипта сборки clearmake? Или вы пытаетесь создать один make-файл, который будет поддерживать оба инструмента сборки? Я думаю, что GNUMAKEFLAGS EV безопаснее для значений GNU make specifici c. Я бы также использовал

  • CCASE_MAKEFLAGS для любых makeflags, которые указаны c для очистки.
  • CCASE_CON C для установки значения параллелизма. Хотя clearmake больше не передает -J в MAKEFLAGS, как это было раньше, и если вы используете более старый clearmake (где-то в семерке, насколько я помню), вы могли бы расстроить «дочерние» сеансы GNU make, поскольку им нравится -J примерно как так же, как clearmake любит -j.

Наконец, проверьте страницу руководства env_ccase на предмет поведения, упомянутого в CCASE_MAKEFLAGS_V6_OBSOLETE. Если вы явно передадите MAKEFLAGS в скрипте сборки, например

$(MAKE) $(MAKEFLAGS) TARGET=x

и запустили clearmake следующим образом:

clearmake -C gnu TARGET=Y

, вы фактически получите оба определения макроса TARGET в командной строке. Установка упомянутого EV (вообще) позволяет избежать поведения «передать определенные макросы в MAKEFLAGS». Переключатель существует потому, что у некоторых людей есть make-файлы, ЗАВИСИМЫЕ от этого поведения, в то время как у других есть файлы, РАЗРЕШЕННЫЕ этим поведением ...

Предполагая, что у вашей компании есть соглашение о поддержке с IBM или HCL, сейчас хорошее время, чтобы использовать ваши каналы поддержки, чтобы сообщить о проблемах clearmake.

0 голосов
/ 21 июня 2020

« ПОСТРОЕНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С CLEARCASE » ясно заявляет в своих «неподдерживаемых функциях Gnu make», что эта опция действительно не поддерживается.

–j [JOBS]
--jobs=[JOBS]

Возможно, clearmake -C -J может help (для тестирования): тогда не должно быть ограничений на количество параллельных сборок.

...