Я установил gcc
на OSX через brew
.Мне нужно использовать gcc вместо clang для конкретной команды, которую не поддерживает clang.На экране оболочки команда gcc example.c
компилирует код example.c с помощью clang, тогда как команда gcc-9 example.c
компилирует код с исходным gcc (GNU C Compiler).
В QT мне нужно использовать функцию pipe()
, чтобы получить вывод команды GCC.Если я добавлю командную строку с gcc в функцию pipe, она выдаст ошибку, потому что clang не поддерживает конкретную команду, о которой я упоминал в начале.Если я добавлю команду с gcc-9 в функцию pipe, на этот раз QT выдаст ошибку типа «gcc-9: not found».
Почему команда gcc-9
работает на экране оболочки, а не в QT?Как я могу использовать команду gcc-9
в QT?
Код ниже:
std::string removeComments(const std::string &path)
{
std::array <char, 256> buffer;
std::string result, cmd = "gcc-9 -fpreprocessed -dD -E '" + path + "'";
std::unique_ptr <FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"), pclose);
if (!pipe)
throw std::runtime_error("popen() failed!");
fgets(buffer.data(), buffer.size(), pipe.get());
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr)
if (!skipLine(buffer.data()))
result += buffer.data();
return result;
}