Я хотел бы передать имя включаемого файла в качестве аргумента компилятора, чтобы я мог изменить большое количество параметров конфигурации. Тем не менее, моя сборка C ++ осуществляется через процесс, подобный make-файлу, который удаляет кавычки из аргументов, передаваемых компилятору и препроцессору. Я надеялся сделать что-то эквивалентное
#ifndef FILE_ARG
// defaults
#else
#include "FILE_ARG"
#endif
с моей командной строкой, включающей -DFILE_ARG = foo.h. Это, конечно, не работает, поскольку препроцессор не переводит FILE_ARG.
Я пробовал
#define QUOTE(x) #x
#include QUOTE(FILE_ARG)
, который не работает по той же причине.
По причинам, связанным с написанием сценариев, я предпочел бы сделать это в командной строке, чем идти и редактировать строку включения в соответствующей подпрограмме. Есть ли способ?