介子复制/安装头文件到输出目录并保持文件夹结构

DJ指挥

基本上,我希望能够在功能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)

有人对此有解决方案吗?
如果有任何方法的必要,我将提供我的源代码和标头的完整列表。
我目前正在通过shell命令复制文件,但是最好将其包含在安装/构建过程中。

//编辑:
我在Windows上使用介子构建。

DJ指挥

我找到了解决我想要的方法。
如果有人找到更好的解决方案,需要所有头文件的列表,请随时回答,我会接受的。

现在这是我所做的:

project('MyProject', 'cpp')


test_src = files([  'src/MyProject/folder1/file11.cpp',
                    'src/MyProject/folder1/file12.cpp' ])

# Note that i'm omitting the base folder here since exclude_files searches relative to the subdir path
# Also, forward slash doesnt work. You have to use double backslash
test_src_exclude = [  'folder1\\file11.cpp',
                      'folder1\\file12.cpp' ]

dir_base = meson.current_source_dir()
dir_install = join_paths(dir_base, 'build/meson-out/MyProject')
dir_install_hdr = join_paths(dir_install, 'include')

static_library('MyProject', name_prefix: '', name_suffix : 'lib', 
                sources: test_src,
                install: true,
                install_dir: dir_install)

install_subdir( 'src/MyProject', 
                install_dir: dir_install_hdr, 
                strip_directory: true,
                exclude_files: text_src_exclude)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将目录结构复制到枚举的文件夹

Visual Studio:如何在不复制文件夹结构的情况下“复制到输出目录”?

将 html 和 css 文件复制到 dist,同时保持文件夹结构

将文件从多个(指定的)文件夹路径复制到另一个目录,同时保持文件结构

如何从保持文件夹名称的目录中复制文件夹/文件

递归查找和复制文件夹,但保持结构

从文件夹和子文件夹复制文件,但不保留目录结构

如何防止二进制文件夹也被复制到输出目录?

Visual Studio将项目文件夹复制到输出目录(WPF解决方案)

使用webpack在输出目录中保留文件夹结构

Wix-如何复制目录以安装文件夹

如何复制目录结构,文件夹,子文件夹,文件属性,元数据,而不复制文件的实际内容?

WiX:将文件从本地文件夹复制到安装文件夹

scp到远程系统的文件夹,保持目录布局

如何将文件夹的内容和树形结构复制到具有相同结构的远程目录中

使用Typescript 3构建到dist /文件夹时,保持src /文件夹结构

Grunt-Contrib-Copy,如何在不覆盖 dest 文件夹中的现有文件/文件夹的情况下复制保持相同文件夹结构的目录内容?

将文件从文件夹和子文件夹复制到另一个文件夹并保存文件夹的结构

将C#项目中包含的文件夹内容复制到没有父文件夹的输出目录中

如何将文件夹和里面的项目一起复制到输出目录?

如何使用Gulp复制多个文件并保持文件夹结构

Dockerfile-仅复制与扩展名匹配的文件,同时保持文件夹结构

如何在保持原始文件夹结构的同时复制文件?

Powershell 复制,保留文件夹结构

MSBuild将文件复制到没有文件层次结构的单个文件夹中

将一组特定文件从一个目录复制到另一个目录,同时保留文件夹结构

将文件列表从目录+子文件夹复制到另一个文件夹

以递归方式将文件从层次结构复制到单个平面文件夹

批处理文件循环遍历文件夹,并将文件夹和内容复制到具有相同文件夹名称的目录