O pré-processador C pode ser usado para dizer se existe um arquivo?

Eu tenho uma base de código muito grande (leia-se: milhares de módulos) que tem código compartilhado em vários projetos que são executados em diferentes sistemas operacionais com diferentes compiladores C ++. Escusado será dizer que a manutenção do processo de construção pode ser uma tarefa difícil.

Existem vários lugares na base de código onde seria possível limpar o código substancialmente se houvesse uma maneira de fazer com que o pré-processador ignorasse certas#includes se o arquivo não existisse na pasta atual. Alguém sabe uma maneira de conseguir isso?

Atualmente, usamos um#ifdef em volta do#include no arquivo compartilhado, com um segundo arquivo específico do projeto que # define se#include existe no projeto. Isso funciona, mas é feio. As pessoas muitas vezes esquecem de atualizar corretamente as definições quando adicionam ou removem arquivos do projeto. Pensei em escrever uma ferramenta de pré-compilação para manter esse arquivo atualizado, mas se houver uma maneira independente de plataforma para fazer isso com o pré-processador, prefiro fazê-lo dessa maneira. Alguma ideia?

questionAnswers(9)

yourAnswerToTheQuestion