【问题标题】:How to get directory path from meson?如何从介子获取目录路径?
【发布时间】:2021-04-08 12:26:44
【问题描述】:

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

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 程序访问它?

【问题讨论】:

    标签: c linux path meson-build


    【解决方案1】:

    安装介子会使用前缀+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

    【讨论】:

    • 我使用 gnome-builder 作为我的 IDE。当我“导出捆绑包”时,我可以在 files/share/progname 中找到我的文件。我应该调用 ninja install 命令将其安装在 /usr/local/share/progname 中吗?分发项目时如何管理它?有没有办法以某种方式自动调用忍者安装?
    • 好吧,你需要调用 ninja install 来安装你的 datafile.dat。我不确定你所说的分发是什么意思。从源代码构建时,使用 meson 进行配置,使用 ninja 进行构建,使用 ninja install 进行安装。就是这样。
    • @Vahan,如果这解决了您的问题,请考虑接受答案。
    • 啊,是的,我忘了这样做。再次感谢您,我现在就这样做。
    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多