Stavo lavorando su un progetto che richiede il caricamento di librerie native e, finora, tutto lo sviluppo era limitato a Linux. Al fine di run
mio progetto, ho potuto attivare i biforcazione e modificare java.library.path
come segue:SBT: modo multipiattaforma per impostare java.library.path?
javaOptions in run += "-Djava.library.path=some/common/path:lib/native/linux"
La mia domanda è: come posso fare la stessa cosa in un modo cross-platform, in modo che possa condividere la mia build. sbt con uno sviluppatore basato su Windows. Vi sono in particolare tre cose che non riuscivo a capire finora:
- so che SBT permette di costruire percorsi indipendenti dalla piattaforma, come
"dir1"/"dir2"
, ma io non sono a conoscenza di un modo cross-platform per unire percorsi multipli (poiché è:
su Linux e;
su Windows). - È possibile aggiungere
lib/native/linux
olib/native/windows
in base alla piattaforma? - Il mio approccio sopra sovrascrive
java.library.path
- è possibile aggiungere invece?
Questo è bello. Ho dimenticato di dire che sto ancora usando SBT 0.12 e, in generale, speravo in una versione agnostica. Ma penso che questa idea funzioni anche in 0.12. Ho ancora difficoltà ad usare la sintassi '/' di SBT, dal momento che non esiste alcuna conversione implicita da String a (credo) File. Ma ovviamente c'è sempre la soluzione per farlo manualmente con 'separatorChar'. E a scopo di debug: Qualche idea sul perché 'show java-options' restituisca sempre' List() '? – bluenote10
Sì, questo dovrebbe funzionare bene in 0.12. Tranne che IIRC, usa Scala 2.9 per la configurazione di build, quindi l'interpolazione delle stringhe dovrebbe essere sostituita con '+'. Per l'ultima domanda, non lo so. Forse chiedilo separatamente? –
E riguardo 'System.getProperty (" java.library.path ")' e fai da solo la concatenazione? –