2012-03-11 98 views
6

我已经使用GNU autoconf为我的程序生成配置脚本,我现在正在尝试为Windows进行交叉编译。告诉配置脚本使用相对路径--datarootdir

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

不幸的是,路过--datarootdir=.不起作用:

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

你怎么知道的Autoconf /配置您相对于当前目录在运行时的路径?

回答

3

我想我已经找到了一个部分解决方案。看起来--datarootdir用于控制文件的安装位置,所以它需要是一个绝对路径的好处make install。然而,它可以在编译过程中被覆盖:

make datadir="." 

这样,在编译期间代码认为$(datadir)是“”但运行make install当文件仍放在给./configure --datarootdir=...

+0

当然,因为我已经意识到这ISN也不是最好的解决方案。当直接启动.exe时,它工作正常(.exe位于当前目录中),但是当双击与该应用程序关联的文档文件时,将从文档文件的目录中启动.exe,这意味着数据文件不能被发现... – Malvineous 2012-03-12 02:38:36

1

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

./configure --datarootdir=$PWD 
+0

存在的问题是,如果一个用户选择将目标系统上的应用安装到C:\ Program Files中,并将另一个用户安装到D:\ Apps中,则两者之间的datarootdir将不同。 $ PWD在编译时只会是准确的,而我需要的是相对于运行时当前目录的值。 – Malvineous 2012-03-12 01:43:22