3

我最近一直在挖掘铬代码,然后我发现了一段我看不懂的代码。文件位于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'],
4

1 回答 1

3

请参阅gyp 文档中的命令扩展

<!@表示命令扩展

在命令扩展中,括号中包含的整个字符串被传递到系统的 shell。该命令的输出被分配给一个字符串值,该值随后可以在列表上下文中以与使用 @ 字符时的变量扩展相同的方式进行扩展。

例子:

{
  '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',
  ],
}
于 2014-06-24T07:47:28.783 回答