【问题标题】:Tell a configure script to use a relative path for --datarootdir告诉配置脚本使用 --datarootdir 的相对路径
【发布时间】:2012-03-11 10:11:15
【问题描述】:

我已经使用 GNU autoconf 为我的一个程序生成了一个配置脚本,我现在正在尝试为 Windows 交叉编译。

在 Linux 下,更改我提供的数据文件的位置 --datarootdir=/blah 工作正常。然而,在 Windows 下,我的应用程序的路径要到运行时才能知道(因为用户可以选择将它安装在任何地方。)因此,我想将数据目录设置为当前目录,无论应用程序当时可能在哪里已启动。

很遗憾,传递--datarootdir=. 不起作用:

configure: error: expected an absolute directory name for --datarootdir: .

如何告诉 Autoconf/configure 您想要在运行时相对于当前目录的路径?

【问题讨论】:

    标签: cross-compiling autoconf


    【解决方案1】:

    我想我已经找到了部分解决方案。似乎--datarootdir 用于控制文件安装 的位置,因此它需要是一个绝对路径,以便make install 受益。但是它可以在编译期间被覆盖:

    make datadir="."
    

    这样,在编译期间代码认为$(datadir) 是“。”但是在运行make install 时,文件仍然放置在给./configure --datarootdir=... 的绝对路径中

    【讨论】:

    • 当然我已经意识到这也不是最好的解决方案。直接启动.exe运行正常(.exe在当前目录下),但是当双击应用关联的文档文件时,.exe是从文档文件的目录启动的,这意味着数据文件不能被发现...
    【解决方案2】:

    只要给它一个等于当前工作目录的绝对路径即可:

    ./configure --datarootdir=$PWD
    

    【讨论】:

    • 这里的问题是,如果一个用户选择将我的应用程序在目标系统上安装到 C:\Program Files,另一个安装到 D:\Apps,则两者之间的 datarootdir 将不同。 $PWD 只会在编译时准确,而我需要该值相对于运行时当前目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    相关资源
    最近更新 更多