我正在尝试使用该配置文件从 conan-center 构建
qt/5.15.2@
包:
[settings]
build_type=Debug
arch=x86_64
arch_build=x86_64
os=Linux
os_build=Linux
compiler=clang
compiler.version=9
compiler.libcxx=libc++
[env]
CC=clang-9
CXX=clang++-9
CXXFLAGS="-v"
输出失败
Performing shadow build...
Preparing build tree...
Creating qmake...
In file included from /home/user/conan/qt/5.15.2/my/my/source/qt5/qtbase/qmake/main.cpp:30:
In file included from /home/user/conan/qt/5.15.2/my/my/source/qt5/qtbase/qmake/project.h:32:
In file included from /home/user/conan/qt/5.15.2/my/my/source/qt5/qtbase/qmake/library/qmakeevaluator.h:36:
In file included from /home/user/conan/qt/5.15.2/my/my/source/qt5/qtbase/qmake/library/qmakeparser.h:32:
In file included from /home/user/conan/qt/5.15.2/my/my/source/qt5/qtbase/qmake/library/qmake_global.h:32:
In file included from /home/user/conan/qt/5.15.2/my/my/source/qt5/qtbase/include/QtCore/qglobal.h:1:
/home/user/conan/qt/5.15.2/my/my/source/qt5/qtbase/include/QtCore/../../src/corelib/global/qglobal.h:45:12: fatal error: 'type_traits' file
not found
# include <type_traits>
^~~~~~~~~~~~~
1 error generated.
我已经尝试了很多方法来解决它:
-I /usr/lib/llvm-9/include/c++/v1/
添加到 ./configure
。 configure的帮助上说可以接受 -I
、-D
、-L
参数INCLUDE
的值定义
INCLUDEPATH
或
/usr/lib/llvm-9/include/c++/v1/
QMAKE_CXXFLAGS
调用中的 ./configure
以上所有方法都不起作用,输出仍然相同路径
/usr/lib/llvm-9/include/c++/v1/
也包含所有 stdlib 标头和 type_traits
。其他 conan 包构建良好,向编译器添加 -v
选项会显示包含上述路径的包含路径列表。-v
添加到 QMAKE_CXXFLAGS
和 CXXFLAGS
来跟踪包含路径,但它甚至没有改变任何东西我在 Alpine Linux 上从源代码编译 Qt 时遇到了类似的问题。就我而言,原因是传递了错误的拱门进行配置,但它呈现出相同的结果,这些是我修复它所遵循的步骤:
-v
进行配置。这将导致它吐出实际使用的命令(例如 clang++ -c -o main.o ....
-###
添加到此编译命令中。这将导致 clang 吐出“真实”命令,例如"/usr/lib/llvm17/bin/clang++" "-cc1" "-triple" "x86_64-alpine-linux-musl" ....
... "-triple" "i386-alpine-linux-musl" ...
,这是不正确的。我把命令行改成用
"-triple" "x86_64-alpine-linux-musl"
来代替。2然后我拍了拍额头,因为我通过了
-platform linux-clang-32
来配置,但正确答案是
-platform linux-clang
。我解决了这个问题,我很开心!3
1 这是一个主要的调试技巧,适用于多种情况。
2 我之前摸索并看到一个同名文件夹时就知道这可能是正确的答案。
3 正如我继续遇到、挣扎并一次解决另外 100 个错误,直到 configure
成功完成一样,然后又花了 3 天进行编译。