#google-chrome #syntax #chromium #gyp
#google-chrome #синтаксис #chromium #gyp
Вопрос:
Недавно я копался в коде chromium, а затем нашел фрагмент кода, который я не мог понять. Файл находится по адресу src/media/media.gyp
Может кто-нибудь объяснить, что означает эта строка на простом английском языке?
Строка, которую я не понимаю :
'<!@(<(pkg-config) --cflags libpulse)',
Код :
['OS!="linux"', {
'sources!': [
'audio/cras/audio_manager_cras.cc',
'audio/cras/audio_manager_cras.h',
'audio/cras/cras_input.cc',
'audio/cras/cras_input.h',
'audio/cras/cras_unified.cc',
'audio/cras/cras_unified.h',
],
}],
['use_pulseaudio==1', {
'cflags': [
'<!@(<(pkg-config) --cflags libpulse)', # <- this line
],
'defines': [
'USE_PULSEAUDIO',
],
'conditions': [
['linux_link_pulseaudio==0', {
'defines': [
'DLOPEN_PULSEAUDIO',
],
'variables': {
'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
'extra_header': 'audio/pulse/pulse_stub_header.fragment',
'sig_files': ['audio/pulse/pulse.sigs'],
Ответ №1:
Смотрите Расширения команд в документах gyp
<!@
означает расширения команд
При расширении команды вся строка, содержащаяся в круглых скобках, передается системной оболочке. Вывод команды присваивается строковому значению, которое впоследствии может быть расширено в контексте списка таким же образом, как расширения переменных, если используется символ @ .
Пример:
{
'sources': [
'!(echo filename with space.cc)',
],
'libraries': [
'!@(pkg-config --libs-only-l apr-1)',
],
}
будет расширен до
{
'sources': [
'filename with space.cc', # no @, expands into a single string
],
'libraries': [ # @ was used, so there's a separate list item for each lib
'-lapr-1',
'-lpthread',
],
}
Комментарии:
1. это то, что я искал. большое вам спасибо 🙂