Pergunta

fazer quaisquer classes independentes C ++ GNU existe quais caminhos alça de plataforma cruzada? Minhas aplicações construir no Windows e Linux. Nossos arquivos de configuração se referir a outro arquivo em um diretório separado. Eu gostaria de ser capaz de ler o caminho para o outro arquivo de configuração em uma classe que iria trabalhar em Linux ou Windows.

Qual classe iria oferecer a menor pegada de traduzir caminhos para uso em qualquer sistema? Graças

Foi útil?

Solução

A menos que você estiver usando caminhos absolutos, não há necessidade de traduzir em tudo - Windows converte automaticamente barras em barras invertidas, por isso, se você usar caminhos relativos com separadores de caminho barra, você vai ser de ouro. Você realmente deve evitar caminhos absolutos, se possível.

Outras dicas

Filesystem biblioteca no impulso, provavelmente, ajudá-lo.

Há muitas maneiras, IMHO a resposta correta é redesenhar o seu programa para evitar manipulação de caminhos. Eu postei uma resposta aqui:. https://stackoverflow.com/a/40980510/2345997 que é relevante

formas:

  1. Adicione uma opção de linha de comando que permite que um usuário para especificar o caminho em questão, em vez de lê-lo a partir de um arquivo de configuração.
  2. Adicione uma opção de linha de comando para que o usuário pode especificar um caminho base. Caminhos no arquivo de configuração será interpretado como localizado sob este caminho de base.
  3. Dividir o seu arquivo de configuração em três. Um arquivo terá a configuração de plataforma cruzada, um outro arquivo terá janelas única configuração e um arquivo final terá Linux única configuração. Em seguida, o usuário pode especificar o caminho correto para Windows e Linux. No windows o seu programa irá ler o arquivo de configuração multi-plataforma e as janelas única config. No Linux ele irá ler o arquivo multi-plataforma e o arquivo só config-Linux.
  4. Adicionar pré-processamento para a sua análise de arquivo de configuração. Isto irá permitir que você tenha um arquivo de configuração onde o usuário pode fazer o seu programa de ignorar algumas das linhas no arquivo, dependendo de qual sistema operacional o programa está sendo executado. Portanto, o usuário será capaz de especificar o caminho para o arquivo duas vezes. Uma vez para Linux, e uma vez para o Windows.
  5. Altere o projeto de modo que os arquivos são sempre localizado no mesmo diretório do executável -., Em seguida, o usuário só especifica os nomes dos arquivos no arquivo de configuração em vez de caminhos para arquivos
  6. Use uma função simples que muda "/" para "\". Então documento para o usuário que ele deve especificar caminhos como caminhos Linux e essa transformação será aplicada para as janelas.
  7. Crie o seu próprio caminho mini-idioma para isso e documentá-lo para o usuário. Por exemplo: "/" - especifica um separador de diretório, {raiz} - expande para a raiz do sistema de arquivos, {cwd} - expande para o diretório atual, {app} - expande-se para o caminho para o aplicativo etc ... Em seguida, a usuário pode especificar caminhos de arquivo como:. {raiz} /myfiles/bob.txt em ambas as plataformas
  8. Alguns caminhos irá funcionar em ambas as plataformas. Por exemplo: caminhos relativos como arquivos ../my / bill.txt. Restringir seu aplicativo para funcionar apenas com esses caminhos. Documentar essa limitação e como suas alças de aplicação caminhos para o usuário.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top