Finora tutto il mio sviluppo in C ++ è stato indirizzato a Windows, tuttavia ho sempre avuto in mente che un giorno mi rivolgerò a Linux. Sono quindi consapevole della necessità di selezionare librerie multipiattaforma e di mantenere il mio codice il più portabile possibile (o di fornire implementazioni alternative per il codice che non è portatile). Pertanto, questa domanda non riguarda i problemi di compilazione del codice.
Mi piacerebbe sapere quali sono i problemi comuni che uno sviluppatore dovrà affrontare quando scegli come target sia Linux che Windows? In particolare, ma non limitato a:
-
Le migliori pratiche per la gestione dei file di configurazione. Su Windows sembra che questo sia abbastanza arbitrario: ho visto il software archiviare la loro configurazione all'interno della cartella del programma, nella cartella dell'utente (in appData) e nel registro. Su Linux sembra molto più pesantemente ponderato verso le cartelle di configurazione dedicate (/ etc). Come dovrei gestire queste differenze nel mio codice? Do un codice fisso per le posizioni, o c'è qualche funzione definita dal sistema che posso consultare?
-
Come per (1) ma per la registrazione.
-
Come faccio a mantenere sincronizzati i file del mio progetto? Per esempio. se aggiorno qualcosa in un file di progetto di Visual Studio, generalmente devo aggiornare manualmente la cosa equivalente in qualunque ambiente Linux sto lavorando, oppure esiste un metodo comunemente usato per evitare questo?
-
Qual è il modo migliore per gestire le differenze di implementazione della piattaforma nel mio codice? Dovrei usare #ifdefs, o dovrei mantenere il codice specifico della piattaforma in file separati e chiedere al progetto di specificare quali file sono inclusi?
-
Qualcos'altro che non ho pensato a quale avrei dovuto iniziare a considerare / ricercare?