Я хотел бы передать имя включаемого файла в качестве аргумента компилятора, чтобы я мог изменять большое количество параметров конфигурации. Однако моя сборка 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)
, который не работает по той же причине.
Из соображений сценария я бы предпочел сделать это на командную строку, чем войдите и отредактируйте строку включения в соответствующей программе. Есть ли способ?