Невозможно использовать библиотеку C ++ `std :: filesystem` со сборкой Meson - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать фрагмент кода C ++, который использует новую библиотеку файловой системы C ++ 17, используя систему сборки Meson.

Это часть файла 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».

Это сообщение об ошибке Iget from Meson:

src / meson.build: 33: 0: ОШИБКА: Собственная зависимость 'libc ++ fs' не найдена

Компилятор, который я сейчас используюLLVM / лязг.

1 Ответ

0 голосов
/ 27 сентября 2018

dependency () для внешних библиотек.Стандартные библиотеки должны быть настроены с использованием командной строки компилятора со специальными функциями, такими как add_XXX_arguments () .Итак, попробуйте

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

Однако, '-lstdc ++ fs' может не понадобиться в вашем случае .

...