Вам необходимо сделать хранилище параметра внешним.
В некоторых файлах общего заголовка объявить переменную:
extern std::string input;
И определить ее и сам параметр только в одном из ваших источников:
std::string input;
cl::opt<std::string, true> inputFlag("input", cl::init(""), cl::desc("the input file"), cl::value_desc("the input file"), cl::location(input));
Примечание добавил аргумент cl::location(input)
, который указывает cl::opt
сохранить значение параметра в переменной input
. Теперь вы можете получить доступ к значению input
s из разных TU, но иметь только одно определение.
См. Раздел Внутреннее и внешнее хранилище .