如何从介子获取目录路径?

问题描述

我已阅读介子文档中的以下行

install_data('datafile.dat',install_dir : get_option('datadir') / 'progname')

这应该在介子运行时将 datafile.dat 安装到 share/progname。我正在使用 linux,我不清楚 share/progname 在我的计算机中的实际位置。在 c 程序中我如何打开那个安装的文件?运行这样的东西对我不起作用:

 FILE * fptr = fopen("share/progname/datafile.dat","w");
   ....

share/progname 是否类似于前缀,它是某个位置的虚拟路径?或者是别的什么?如何安装我的数据库文件并从 C 程序访问它?

解决方法

安装介子会使用前缀+install_dir,默认前缀是/usr/local/,所以如果你有:

install_data('datafile.dat',install_dir :'progname')

并调用 ninja installdatafile.dat 将安装在 '/usr/local/progname'

就你而言

install_data('datafile.dat',install_dir : get_option('datadir') / 'progname')

如果您不提供 -Dprefix-Ddatadir

ninja install 将在 /usr/local/share/progname

安装

但是你可以像这样用 -Dprefix-Ddatadir 调整它:

meson -Dprefix='/path/to/prefix' -Ddatadir='other' ..

在调用 ninja install 后,它将安装在 /path/to/prefix/other/progname