2012-03-11 99 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