无法在Meson构建中使用C ++`std :: filesystem`库

时间:2018-09-26 10:58:32

标签: c++ clang boost-filesystem meson-build

我正在尝试使用Meson构建系统构建一段使用新的C ++ 17 Filesystem库的C ++代码。

这是涉及的meson.build文件的一部分:

if not compiler.has_header('filesystem')   # This is OK
    warning('The compiler has no <filesystem> header file')
endif

filesystem_dep = dependency('libc++fs', modules : ['filesystem'])

test_exe = executable('test', test_src,
                      include_directories : include_dirs,
                      dependencies : filesystem_dep
                     )

如果使用boost :: filesystem库,则应使用正确的语法:

filesystem_dep = dependency('boost', modules : ['filesystem'])

如何指定我要包含在Standard C ++库中的版本?这是我尝试失败的尝试:'libc ++ fs','stdlib','stdc ++','libc ++','c ++','c ++ 17'。

这是我从介子处收到的错误消息:

  

src / meson.build:33:0:错误:找不到本机依赖项'libc ++ fs'

我当前使用的编译器是LLVM / clang。

1 个答案:

答案 0 :(得分:1)

dependency()用于外部库。应使用带有add_XXX_arguments()之类的特殊功能的编译器命令行来配置标准库。所以,尝试

add_project_arguments(['-stdlib=libc++'], language : 'cpp')
add_project_link_arguments(['-stdlib=libc++','-lstdc++fs'], language : 'cpp')

但是,您的case中可能不需要'-lstdc ++ fs'。