2012-03-11 8 views
6

Ho usato GNU autoconf per generare uno script di configurazione per un mio programma, che sto cercando di compilare per Windows.Comunica a uno script di configurazione di utilizzare un percorso relativo per --datarootdir

Sotto Linux, per modificare la posizione dei file di dati, fornisco --datarootdir=/blah che funziona correttamente. In Windows, tuttavia, il percorso della mia applicazione non sarà noto fino al momento dell'esecuzione (poiché l'utente potrebbe scegliere di installarlo ovunque). Pertanto, desidero impostare la directory dei dati come directory corrente, ovunque si trovi al momento dell'applicazione è lanciato.

Purtroppo, passando --datarootdir=. non funziona:

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

Come si fa a dire Autoconf/configure che si desidera un percorso relativo alla directory corrente in fase di esecuzione?

risposta

3

Penso di aver trovato una soluzione parziale per questo. Sembra che --datarootdir sia usato per controllare dove i file sono installati,, quindi deve essere un percorso assoluto per il vantaggio di make install. Tuttavia può essere ignorato durante la compilazione:

make datadir="." 

In questo modo, durante la compilazione del codice pensa che il $(datadir) è "" ma durante l'esecuzione make install i file sono ancora inseriti nel percorso assoluto dato al ./configure --datarootdir=...

+0

Naturalmente allora ho capito che questo isn anche la migliore soluzione. Quando si avvia il file .exe direttamente funziona (l'estensione è nella directory corrente), ma quando si fa doppio clic su un file di documento associato all'app, l'exe viene avviato dalla directory del file del documento, il che significa che i file di dati non possono essere trovato ... – Malvineous

1

Basta dare un percorso assoluto che è uguale alla directory di lavoro corrente:

./configure --datarootdir=$PWD 
+0

Il problema è che se un utente sceglie di installare la mia app sul sistema di destinazione in C: \ Programmi, e un'altra in D: \ Apps, il datarootdir sarà diverso tra i due. $ PWD sarà accurato solo al momento della compilazione, mentre ho bisogno che il valore sia relativo alla directory corrente del runtime. – Malvineous

Problemi correlati