介子使用 data/assets 和 portable/relative 路径
Meson working with data/assets and portable/relative paths
我想用 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.html and http://mesonbuild.com/Reference-manual.html#install_data。
谢谢。
I thought of adding a define DATA_PREFIX set at compile time
这是我推荐的方法。然后,您可以使用 configure_file()
输出包含它的 header:
conf = configuration_data()
conf.set_quoted('PACKAGE_DATADIR', join_paths(get_option('prefix'), pkgdatadir))
configure_file(
output: 'config.h',
configuration: conf
)
然后只需在您的来源中包含 config.h
。
我想用 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.html and http://mesonbuild.com/Reference-manual.html#install_data。
谢谢。
I thought of adding a define DATA_PREFIX set at compile time
这是我推荐的方法。然后,您可以使用 configure_file()
输出包含它的 header:
conf = configuration_data()
conf.set_quoted('PACKAGE_DATADIR', join_paths(get_option('prefix'), pkgdatadir))
configure_file(
output: 'config.h',
configuration: conf
)
然后只需在您的来源中包含 config.h
。