如何更改介子子项目的输出目录?

Posted

技术标签:

【中文标题】如何更改介子子项目的输出目录?【英文标题】:How to change output directory of a meson subproject? 【发布时间】:2020-04-24 14:38:45 【问题描述】:

这是我的meson.build

project('Adventum', 'cpp', version : '0.1.0', license : '', default_options : ['cpp_std=c++2a'])

glfw = subproject('glfw').get_variable('glfw_dep')
vulkan = dependency('vulkan')   

sources = ['src/main.cpp', 'src/render/window.cpp']

exe = executable('Adventum', sources, include_directories : 'src', dependencies : [glfw, vulkan])

这是我的“子项目”(换行):

[wrap-git]
url = https://github.com/henry4k/glfw-meson.git
revision = head

我正在使用 GLFW 库,但我必须从支持介子的第三方分支中提取。这一切都很好,介子成功下载并构建了 GLFW 分支,但是即使介子应该清楚地知道我的项目依赖于 GLFW 库,它实际上并没有将 GLFW 二进制文件放在我的项目可执行文件旁边,所以它构建了依赖项但是我的程序无法运行,因为它找不到必要的二进制文件。

我必须在我的 meson.build 中指定什么内容才能自动将二进制文件放在我的可执行文件旁边吗?

【问题讨论】:

【参考方案1】:

如果您没有指定目录名或[provide] 部分与dependency_names.wrap 的文件名将决定子项目的调用方式。 因此,如果您的 wrap 文件名为 glfw-meson.wrap,您的子项目只能使用 glfw-meson 引用。

更好的做法是指定directory

[wrap-git]
directory = glfw
url = https://github.com/henry4k/glfw-meson.git
revision = head

dependency_names:

[wrap-git]
url = https://github.com/henry4k/glfw-meson.git
revision = head

[provide]
dependency_names = glfw

那么,你应该可以拨打subproject('glfw')

【讨论】:

以上是关于如何更改介子子项目的输出目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有多个子项目的 SBT 项目中覆盖子项目中的设置

sbt 子项目的项目目录

单击时如何仅更改离子列表中的一种离子项颜色?

如何更改代理构建目录?

VS/MSBUILD:复制子项目的输出文件,不添加对exe的引用

项目和子项目的 Cocoapods