首页 > 解决方案 > 在介子中提供头文件依赖

问题描述

我正在使用介子构建系统0.49.0ubuntu 18.04我的项目有一些 idl 文件,我想包含来自另一个文件夹的头文件。如何include_directories在介子中添加提供。

idl_compiler  = find_program('widl')

idl_generator = generator(idl_compiler,
  output       : [ '@BASENAME@.h' ],
  arguments    : [ '-h', '-o', '@OUTPUT@', '@INPUT@' ])

idl_files = [ .... ]
header_files = idl_generator.process(idl_files)

标签: idlmeson-build

解决方案


您可以将包含目录直接添加到generator()参数:

idl_generator = generator(idl_compiler,
  output       : '@BASENAME@.h',
  arguments    : [ 
        '-h',
        '-o', '@OUTPUT@', 
        '-I', '@0@/src/'.format(meson.current_source_dir()),
        '@INPUT@' ])

我添加了-I选项,根据文档可用于

将标题搜索目录添加到路径。允许多个搜索目录。

并将介子的字符串格式介子的对象方法 current_source_dir()一起使用

返回一个字符串到当前源目录。

另请注意,输出参数是字符串,而不是列表。

或者,例如,如果您有几个并且需要稍后将它们用作依赖项,您可以拥有数组:

my_inc_dirs = ['.', 'include/xxx', 'include']

为生成器生成参数:

idl_gen_args = [ '-h', '-o', '@OUTPUT@', '@INPUT@' ]
foreach dir : my_inc_dirs
   idl_gen_args += ['-I', '@0@/@1@'.format(meson.current_source_dir(), dir)]
endforeach

idl_generator = generator(idl_compiler,
  output       : '@BASENAME@.h',
  arguments    : idl_gen_args)

并稍后用于依赖:

my_exe = executable(
    ...
    include_directories : [my_inc_dirs],
    ...)

推荐阅读