Domanda

Esistono classi standalone GNU C ++ che gestiscono percorsi multipiattaforma? Le mie applicazioni si basano su Windows e LInux. I nostri file di configurazione si riferiscono a un altro file in una directory separata. Mi piacerebbe poter leggere il percorso per l'altro file di configurazione in una classe che funzionerebbe sia su Linux che su Windows.

Quale classe offrirebbe il minimo ingombro per tradurre i percorsi da utilizzare su entrambi i sistemi? Grazie

È stato utile?

Soluzione

A meno che tu non stia utilizzando percorsi assoluti, non è necessario tradurre affatto: Windows converte automaticamente le barre in avanti in barre rovesciate, quindi se usi percorsi relativi con separatori di percorsi in barra, sarai dorato. Dovresti davvero evitare percorsi assoluti, se possibile.

Altri suggerimenti

Libreria del filesystem in boost probabilmente probabilmente aiutarti.

Esistono molti modi, IMHO la risposta corretta è riprogettare il programma per evitare di manipolare i percorsi. Ho pubblicato una risposta qui: https://stackoverflow.com/a/40980510/2345997 che è pertinente.

modi:

  1. Aggiungi un'opzione da riga di comando che consente a un utente di specificare il percorso in questione invece di leggerlo da un file di configurazione.
  2. Aggiungi un'opzione della riga di comando in modo che l'utente possa specificare un percorso di base. I percorsi nel file di configurazione verranno interpretati come situati in questo percorso di base.
  3. Dividi il tuo file di configurazione in tre. Un file avrà una configurazione multipiattaforma, un altro file avrà una configurazione solo Windows e un file finale avrà una configurazione solo Linux. Quindi l'utente può specificare il percorso corretto per Windows e Linux. Su Windows il tuo programma leggerà il file di configurazione multipiattaforma e il file di configurazione di Windows. Su Linux leggerà il file multipiattaforma e il solo file di configurazione di Linux.
  4. Aggiungi preelaborazione all'analisi del file di configurazione. Ciò ti consentirà di avere un file di configurazione in cui l'utente può fare in modo che il tuo programma ignori alcune delle righe del file a seconda del sistema operativo su cui il programma è in esecuzione. Pertanto, l'utente sarà in grado di specificare due volte il percorso del file. Una volta per Linux e una volta per Windows.
  5. Cambia il design in modo che i file si trovino sempre nella stessa directory del tuo eseguibile - quindi l'utente specifica solo i nomi dei file nel file di configurazione anziché i percorsi dei file.
  6. Utilizza una semplice funzione che commuta " / " a " \ " ;. Quindi documentare all'utente che devono specificare i percorsi come percorsi Linux e questa trasformazione verrà applicata per Windows.
  7. Crea il tuo mini-percorso per questo e documentalo all'utente. Ad es .: " / " - specifica un separatore di directory, {root} - si espande nella radice del filesystem, {cwd} - si espande nella directory corrente, {app} - si espande nel percorso della propria applicazione ecc ... Quindi l'utente può specificare i percorsi dei file come: {root} /myfiles/bob.txt su entrambe le piattaforme.
  8. Alcuni percorsi funzioneranno su entrambe le piattaforme. Ad esempio: percorsi relativi come ../my files / bill.txt. Limitare l'applicazione affinché funzioni solo con questi percorsi. Documentare questa limitazione e come l'applicazione gestisce i percorsi per l'utente.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top