2

我正在尝试使用 Meson 构建系统构建一段使用新 C++17 文件系统库的 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'])

如何指定我想要标准 C++ 库中包含的版本?这是我尝试但没有成功的方法:'libc++fs'、'stdlib'、'stdc++'、'libc++'、'c++'、'c++17'。

这是我从 Meson 收到的错误消息:

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

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

4

1 回答 1

3

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

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

但是,在您的情况下可能不需要“-lstdc++fs” 。

于 2018-09-27T13:25:02.310 回答