c++ - 可用编译器的 Homebrew 列表

标签 c++ qt cmake clang homebrew

你好,我需要使用 openmp(使用 cmake 构建)编译一个 Qt 项目。

到目前为止,我使用的是 homebrew 提供的 gcc-5,但我想使用 clang(我的口味...)

我通过 homebrew install clang-omp 安装了 clang-omp 但现在当我尝试编译我的项目时(通过 cmake -DCMAKE_CXX_COMPILER=/usr/local/bin/clang-omp++ ..), 我得到这个错误:

cd /Users/tommaso/neutrino/debug/src && /usr/local/bin/clang-omp++   -DHAVE_HDF5 -DHAVE_JPEG -DHAVE_LIBCFITSIO -DHAVE_LIBCLFFT -DHAVE_LIBDF -DHAVE_LIBFFTW -DHAVE_LIBFFTW_THREADS -DHAVE_LIBGSL -DHAVE_LIBGSLCBLAS -DHAVE_LIBHDF5HL -DHAVE_LIBMFHDF -DHAVE_LIBNETPBM -DHAVE_LIBTIFF -DHAVE_NPHYSIMAGE -DHAVE_OPENCL -DHAVE_PYTHONQT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_MULTIMEDIAWIDGETS_LIB -DQT_MULTIMEDIA_LIB -DQT_NETWORK_LIB -DQT_PRINTSUPPORT_LIB -DQT_SQL_LIB -DQT_SVG_LIB -DQT_UIPLUGIN_LIB -DQT_UITOOLS_LIB -DQT_WIDGETS_LIB -DUSE_QT5 -D__VER=\"osx-cmake-v2.0-75.bdff6e3\" -I/Users/tommaso/neutrino/debug/src -I/Users/tommaso/neutrino/src -I/usr/include/hdf -I/usr/local/include/netpbm -I/Library/Frameworks/qwt.framework/Headers -I/usr/local/Cellar/hdf5/1.8.16_1/include -I/usr/include/python2.7 -I/Users/tommaso/neutrino/src/../../pythonqt-code/src -I/Users/tommaso/neutrino/src/../../pythonqt-code/src/gui -I/Users/tommaso/pythonqt-code/src -I/Users/tommaso/pythonqt-code/extensions/PythonQt_QtAll -I/Users/tommaso/neutrino/src/python -iframework /usr/local/opt/qt5/lib -isystem /usr/local/opt/qt5/lib/QtCore.framework/Headers -isystem /usr/local/opt/qt5/./mkspecs/macx-clang -isystem /usr/local/opt/qt5/lib/QtGui.framework/Headers -isystem /System/Library/Frameworks/OpenGL.framework/Headers -isystem /usr/local/opt/qt5/lib/QtSql.framework/Headers -isystem /usr/local/opt/qt5/lib/QtWidgets.framework/Headers -isystem /usr/local/opt/qt5/lib/QtSvg.framework/Headers -isystem /usr/local/opt/qt5/lib/QtPrintSupport.framework/Headers -isystem /usr/local/opt/qt5/include -isystem /usr/local/opt/qt5/include/QtUiTools -isystem /usr/local/opt/qt5/lib/QtMultimedia.framework/Headers -isystem /usr/local/opt/qt5/lib/QtNetwork.framework/Headers -isystem /usr/local/opt/qt5/lib/QtMultimediaWidgets.framework/Headers -I/Users/tommaso/neutrino/debug -I/Users/tommaso/neutrino/src/graphics -I/Users/tommaso/neutrino/src/doc -I/Users/tommaso/neutrino/src/pans -I/Users/tommaso/neutrino/src/pans/VISAR -I/Users/tommaso/neutrino/src/pans/colorbar -I/Users/tommaso/neutrino/src/pans/winlist -I/Users/tommaso/neutrino/src/../nPhysImage -I/Users/tommaso/neutrino/nPhysImage -isystem /usr/local/opt/qt5/lib/QtUiPlugin.framework/Headers  -O3 -fopenmp -fopenmp -O0 -ggdb -D__phys_debug=10   -std=c++11 -Wall -fPIC -mmacosx-version-min=10.6 -o CMakeFiles/Neutrino.dir/neutrino.cc.o -c /Users/tommaso/neutrino/src/neutrino.cc

In file included from /Users/tommaso/neutrino/src/neutrino.cc:26:
In file included from /usr/local/opt/qt5/lib/QtSvg.framework/Headers/QtSvg:3:
In file included from /usr/local/opt/qt5/include/QtSvg/QtSvgDepends:3:
In file included from /usr/local/opt/qt5/include/QtCore/QtCore:4:
In file included from /usr/local/opt/qt5/lib/QtCore.framework/Headers/qabstractanimation.h:37:
In file included from /usr/local/opt/qt5/include/QtCore/qobject.h:41:
/usr/local/opt/qt5/include/QtCore/qstring.h:739:55: error: no type named 'u16string' in namespace 'std'
    static inline QString fromStdU16String(const std::u16string &s);

事实证明(如果我错了请纠正我)我可能需要使用相同的 clang-omp 编译器来编译 qt。

我认为没什么大不了的但是当我尝试这个时 homebrew 哭了:

HOMEBREW_CC=clang-omp HOMEBREW_CXX=clang-omp++ brew install -s qt5
Error: Invalid value for HOMEBREW_CC: clang-omp

那么有没有办法使用homebrew 重建Qt

是否有一个命令可以为 homebrew 获取可用的编译器?

最佳答案

用不同的编译器重新编译 Qt 可能无法解决问题。

看看this other question相反......

也可能是 Qt 头文件中的错误,无法正确检测您的编译器,然后错误地假设它支持 std::u16string

或者您可能只是忘记添加 #include <string>

关于c++ - 可用编译器的 Homebrew 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36181323/

相关文章:

c++ - 重载++运算符

java - 哪些语言可以很好地替代 Java?

c++ - Qt信号/插槽实际上如何与.ui文件中的元素耦合?

c++ - 将符合 Qt 的 C++ 转换为 ui XML(QtDesigner) 格式 :

xcode - 带有 XCode 目标的 CMake,生成忽略发布配置的调试符号设置

C++ - QtCreator 不显示任何输出

c++ - Boost/STL 在高性能计算方面是否慢?

python - Opencv 3.0 - 模块对象没有属性 'xfeatures2d'

cmake - cmake中的别名有什么意义?

c++ - 允许将右值绑定(bind)到非常量左值引用吗?