Как переместить цель GYP в отдельный включаемый файл

Я хочу, чтобы у многих сценариев GIP была общая цель. Поэтому я решил переместить его в отдельный включаемый файл. Простейший тест-кейс, который выдает ошибку:

foo.gyp

{
'includes'  :   [
'bar.gypi',
],
}

bar.gypi

{
'targets'   :   [
{
'target_name'   :   'phony',
'type'          :   'none',
'actions'       :   [
{
'action_name'   :   '_phony_',
'inputs'        :   ['',],
'outputs'       :   ['',],
'action'        :   ['_phony_',],
'message'       :   '_phony_',
},
],
},
],
}

Выдает ошибку:

IndexError: строковый индекс вне диапазона при чтении включает
foo.gyp при попытке загрузить foo.gyp

Некоторые наблюдения:

  • Если я удалю actions от цели все хорошо разбирается

  • Если я перееду targets (с действиями) для foo.gypвсе хорошо разбирает

Я делаю что-то неправильно? Спасибо!

0

Решение

Похоже, список «результатов» не может быть пустым или содержать пустую строку:

# gyp/make.py:893
self.WriteLn("%s: obj := $(abs_obj)" % QuoteSpaces(outputs[0]))

У вас могут быть пустые входы, но в этом случае фальшивое действие выстрелит только один раз. Я не нашел упоминаний о поддельных действиях в документации GYP, но у меня работает следующий вариант:

# bar.gypi
{
'targets': [
{
'target_name'   :   'phony',
'type'          :   'none',
'actions'       :   [
{
'action_name'   :   '_phony_',
'inputs'        :   ['./bar.gypi'], # The action depends on this file
'outputs'       :   ['test'],       # Some dummy file
'action'        :   ['echo', 'test'],
'message'       :   'Running phony target',
},
],
},
],

}

Я мог бы попытаться найти лучший способ, если бы вы рассказали мне больше о задаче, которую вы пытаетесь решить.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]