Qt Creator 在指定自定义 GCC 后默认为 G++ (4.2)



>问题

我在 QT 创建器中实现 g++48 编译器时遇到问题。我使用 MacPort 构建了这个编译器。QT Creator似乎忽略了我的编译器并默认为xcode g ++ 42。如何正确设置编译器以覆盖它?

故障 排除

您是否正确安装了 gcc/g++,它是选择的主要版本吗?我通过执行以下操作确保 gcc 安装正确且路径正确:

    :~ which gcc:
    /opt/local/bin/g++
    :~ g++ --version:
    g++ (MacPorts gcc48 4.8.1_3) 4.8.1

您使用什么系统? 我的系统:Mac OSX 10.9 Mavericks。QT 创建者 2.8.1 基于 QT 5.1.0。


工具链设置:在QT Creator中,我通过Compilers_Add_GCC并输入编译器路径/opt/local/bin/g++来指定自定义GCC编译器。如果我将鼠标悬停在 *.cpp 中的任何 #include 行上,那么它会正确显示路径/opt/local/include/gcc48/{headerName}。我怀疑问题与 QT Mkspecs 有关,但我真的不明白这是什么或如何为我的自定义 gcc 安装编写自定义版本(如有必要)。这能解释吗?


套件在QT创建器中更新? 该套件已按照此处的说明进行了更新: Qt Creator使用位于另一个地方的另一个GCC版本


为什么你怀疑g++42被使用?这是基于我从检查构建日志文件中获得的结果。

12:30:19: Running steps for project untitled...
12:30:19: Configuration unchanged, skipping qmake step.
12:30:19: Starting: "/usr/bin/make" 
/Applications/Xcode.app/Contents/Developer/usr/bin/g++ -c -pipe -std=c++11 -g -gdwarf-2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.6 -Wall -W -fPIE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -I/Users/raymondvaldes/Qt/5.1.0/clang_64/mkspecs/macx-g++ -I/Users/raymondvaldes/Documents/code/untitled -I. -o main.o /Users/raymondvaldes/Documents/code/untitled/main.cpp
/Users/raymondvaldes/Documents/code/untitled/main.cpp:4:10: fatal error: 'random' file not found
#include <random>
         ^
1 error generated.
make: *** [main.o] Error 1
12:30:20: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled (kit: gcc48)
When executing step 'Make'
12:30:20: Elapsed time: 00:01.

RAYMONDs-MacBook-Air:~ raymondvaldes$ /Applications/Xcode.app/Contents/Developer/usr/bin/g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

最后,这是我的简单工作示例:

#include <iostream>
#include <complex>
#include <cmath>
#include <random>
int main()
{
  std::cout << "Hello World!" << std::endl;
  return 0;
}

和我的专业文件。

cache()
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
QMAKE_CXXFLAGS += -std=c++11
SOURCES += main.cpp

谢谢。

我终于解决了这个问题,现在我可以在QT Creator中使用我的MacPorts GCC48编译器。 正如我怀疑的那样,我需要在 QT 目录中创建一个 gcc48 mkspecs 文件夹,并将文件夹名称提供给 QT Creator 自定义编译器设置屏幕。我创建了"macs-g++48"文件夹,该文件夹是从"~path~QT/5.1.x/clang_64/mkspecs"中的通用"macs-g++"文件夹中复制的。 我不得不修改qmake.conf。我评论掉了

#include(../common/g++-macx.conf)
#include(g++-base.conf)

并将其内容放在 quake.conf 中,同时进行以下修改:

QMAKE_CC  = gcc-mp-4.8
QMAKE_CXX = g++-mp-4.8

最新更新