首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU C编译器没有为OSX开发QT Creator

GNU C编译器没有为OSX开发QT Creator
EN

Stack Overflow用户
提问于 2019-06-25 17:17:16
回答 1查看 273关注 0票数 0

我通过brew在OSX上安装了brew。我需要用gcc而不是clang来做一个具体的命令,而clang不支持。在shell屏幕中,gcc example.c命令用clang编译example.c代码,而gcc-9 example.c命令用原来的gcc (GNU编译器)编译代码。

在QT中,我需要使用pipe()函数来获得GCC命令的输出。如果我在管道函数中放了一个带有gcc的命令字符串,就会产生错误,因为clang不支持我在开头提到的特定命令。如果我在管道函数中使用gcc-9命令,那么这次QT就会出现类似于"gcc-9: command“之类的错误。

为什么gcc-9命令在shell屏幕上工作,而在QT中不起作用?如何在QT中使用gcc-9命令?

代码片段如下:

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-26 11:31:28

用于编译代码的编译器与您试图从代码中调用的编译器无关。IDE中的任何编译器设置都不相关。为了避免混淆,请将它们返回到它们的默认值。

你需要

  1. 设置PATH环境变量,以便包含/usr/local/bin,并且可以通过shell找到命令gcc-9;或
  2. 使用像"/usr/local/bin/gcc-9"这样的完整路径
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56759069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档