我通过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命令?
代码片段如下:
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;
}发布于 2019-06-26 11:31:28
用于编译代码的编译器与您试图从代码中调用的编译器无关。IDE中的任何编译器设置都不相关。为了避免混淆,请将它们返回到它们的默认值。
你需要
PATH环境变量,以便包含/usr/local/bin,并且可以通过shell找到命令gcc-9;或"/usr/local/bin/gcc-9"这样的完整路径https://stackoverflow.com/questions/56759069
复制相似问题