По сути, я хотел бы иметь возможность сочетать функции install_subdir и install_headers.
Я хочу скопировать все заголовочные файлы из моего исходного каталога проекта в какой-то другой каталог и при этом сохранить структуру подкаталогов.
Источник
MyProject
|-- folder1
| |-- file11.h
| |-- file11.cpp
| |-- file12.h
| `-- file12.cpp
`-- folder2
`-- file21.h
Назначение
MyProject
|-- folder1
| |-- file11.h
| |-- file12.h
`-- folder2
`-- file21.h
Я пытался скопировать исходный каталог и исключить все файлы cpp и просто использовать намеченную функцию install_headers()
, но оба не сработали.
Я добавил комментарии к тому, что я сделал и почему. Может быть, кто-то знает, в чем дело:
project('MyProject', 'cpp')
test_src = [ 'src/MyProject/folder1/file11.cpp'
'src/MyProject/folder1/file12.cpp']
# Passing files seems to be preferred but exclude_files only takes list of strings
# test_src = files([ 'src/MyProject/folder1/file11.cpp'
# 'src/MyProject/folder1/file12.cpp'])
test_hdr = files([ 'src/MyProject/folder1/file11.h',
'src/MyProject/folder1/file12.h',
'src/MyProject/folder2/file21.h'])
base_dir = meson.current_source_dir()
static_library('MyProject', name_prefix: '', name_suffix : 'lib',
sources: test_src,
install: true,
install_dir: base_dir + '/build/lib')
# Produces flat hierarchy
install_headers(test_hdr, install_dir: base_dir + '/build/include')
# Also copies all cpp files into destination folder
install_subdir('src/MyProject', install_dir: base_dir + '/build/include', exclude_files: '*.cpp')
# Same result as wildcard exclusion
install_subdir('src/MyProject', install_dir: base_dir + '/build/include', exclude_files: test_src)
У кого-нибудь есть решение этой проблемы?
У меня есть полный список моих источников и заголовков, если это необходимо для какого-либо метода.
Я сейчас нахожусь копирование файлов с помощью команд оболочки, но включение этого в процесс установки / сборки было бы предпочтительным.
// РЕДАКТИРОВАНИЕ:
Я использую мезон-сборку на windows.