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