Компилятор GNU C не работает на QT Creator для OSX - PullRequest
0 голосов
/ 25 июня 2019

Я установил 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;
}

1 Ответ

1 голос
/ 26 июня 2019

Компилятор, который вы используете для компиляции вашего кода, не имеет ничего общего с компилятором, который вы пытаетесь назвать из вашего кода.Ни одна из настроек компилятора в вашей IDE не имеет значения.Чтобы избежать путаницы, верните их значения по умолчанию.

Вам необходимо либо

  1. настроить переменную окружения PATH таким образом, чтобы в нее входило /usr/local/bin, а команда gcc-9 может быть найдена оболочкой;или
  2. используйте полный путь как "/usr/local/bin/gcc-9"
...