Meson使用数据/资产和便携/相对路径

时间:2017-09-28 16:03:18

标签: assets relative-path portability meson-build

我想用Meson在C ++中构建一个小游戏。让我们说这些是我的文件:

.
├── img
│   └── img.png
├── meson.buid
└── src
    ├── main.cpp
    └── meson.build

以下是meson.buid个文件:

# meson.build
project('mygame', 'cpp')
subdir('src')
pkgdatadir = join_paths(get_option('datadir'), 'mygame')
install_subdir('img', install_dir : join_paths([pkgdatadir, 'img']))

第二个文件:

# src/meson.build
executable('mygame', 'main.cpp', install : true)

在我的C ++代码中,我应该使用什么路径以便携式(相对?)方式(Windows,OS X,Linux)加载资源文件,因为我可能已经创建了一个捆绑的应用程序或在系统文件层次结构中安装(deb)包?

我还希望文件路径在构建目录中使用ninja构建时无需安装所有游戏数据。

我想在编译时添加一个define DATA_PREFIX集,或者使用环境变量。

请参阅http://mesonbuild.com/Installing.htmlhttp://mesonbuild.com/Reference-manual.html#install_data

谢谢。

1 个答案:

答案 0 :(得分:1)

  

我想在编译时添加一个定义DATA_PREFIX

这是我推荐的方法。然后,您可以使用configure_file()输出包含它的标头:

conf = configuration_data()
conf.set_quoted('PACKAGE_DATADIR', join_paths(get_option('prefix'), pkgdatadir))
configure_file(
  output: 'config.h',
  configuration: conf
)

然后只在您的来源中添加config.h