Qt项目编译提示找不到math.h头文件的问题求助
Qt项目编译提示找不到math.h头文件的问题求助
各位大佬好,我最近在编译Qt项目时碰到了一个奇怪的问题,折腾了好几种方法都没解决,想请大家帮忙看看!
我最初运行的编译命令是这样的:
/usr/bin/x86_64-linux-gnu-g++-12 --sysroot=/home/mustafa/Desktop/Programming/QtProjects \ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB \ -I/usr/include/c++/12 -I/usr/include/x86_64-linux-gnu \ -I/home/mustafa/Desktop/Programming/QtProjects/build-pcm2-Desktop-Debug/pcm2_autogen/include \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include/QtCore \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/mkspecs/linux-g++ \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include/QtWidgets \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include/QtGui \ -isystem /usr/include \ -DQT_QML_DEBUG -g -std=gnu++17 -fdiagnostics-color=always -fPIC \ -MD -MT CMakeFiles/pcm2.dir/mainwindow.cpp.o -MF CMakeFiles/pcm2.dir/mainwindow.cpp.o.d \ -o CMakeFiles/pcm2.dir/mainwindow.cpp.o -c /home/mustafa/Desktop/Programming/QtProjects/pcm2/mainwindow.cpp
命令里明明带有-isystem /usr/include参数,这个目录下确实存在math.h头文件,但编译器却报出了如下错误:
/usr/include/c++/12/cmath:45:15: fatal error: math.h: No such file or directory 45 | #include_next <math.h> | ^~~~~~~~ compilation terminated.
我试过几种方法试图解决,但都没效果:
- 手动给编译命令加上
-I /usr/include/c++/12(这个目录下也有math.h),但错误依旧; - 在CMakeLists.txt里添加了:
也没起作用;include_directories(BEFORE SYSTEM /usr/include /usr/include/c++/12 ) - 后来听人说可能我把问题复杂化了,于是我删除了自己手动加的
/usr/include/x86_64-linux-gnu包含配置,把CMakeLists.txt还原成了Qt初始生成的样子:
但现在编译命令变成了这样,还是报同样的错误:cmake_minimum_required(VERSION 3.5) project(pcm2 VERSION 0.1 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) set(PROJECT_SOURCES main.cpp mainwindow.cpp mainwindow.h mainwindow.ui ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_executable(pcm2 MANUAL_FINALIZATION ${PROJECT_SOURCES} ) # Define target properties for Android with Qt 6 as: # set_property(TARGET pcm2 APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR # ${CMAKE_CURRENT_SOURCE_DIR}/android) else() if(ANDROID) add_library(pcm2 SHARED ${PROJECT_SOURCES} ) # Define properties for Android with Qt 5 after find_package() calls as: # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") else() add_executable(pcm2 ${PROJECT_SOURCES} ) endif() endif() target_link_libraries(pcm2 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. # If you are developing for iOS or macOS you should consider setting an # explicit, fixed bundle identifier manually though. if(${QT_VERSION} VERSION_LESS 6.1.0) set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.pcm2) endif() set_target_properties(pcm2 PROPERTIES ${BUNDLE_ID_OPTION} MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE TRUE WIN32_EXECUTABLE TRUE ) include(GNUInstallDirs) install(TARGETS pcm2 BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) if(QT_VERSION_MAJOR EQUAL 6) qt_finalize_executable(pcm2) endif()/usr/bin/x86_64-linux-gnu-g++-12 --sysroot=/home/mustafa/Desktop/Programming/QtProjects \ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB \ -I/home/mustafa/Desktop/Programming/QtProjects/build-pcm3-Desktop-Debug/pcm3_autogen/include \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include/QtCore \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/mkspecs/linux-g++ \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include/QtWidgets \ -isystem /home/mustafa/Qt/6.6.1/gcc_64/include/QtGui \ -isystem /usr/include \ -DQT_QML_DEBUG -g -std=gnu++17 -fdiagnostics-color=always -fPIC \ -MD -MT CMakeFiles/pcm3.dir/pcm3_autogen/mocs_compilation.cpp.o -MF CMakeFiles/pcm3.dir/pcm3_autogen/mocs_compilation.cpp.o.d \ -o CMakeFiles/pcm3.dir/pcm3_autogen/mocs_compilation.cpp.o -c /home/mustafa/Desktop/Programming/QtProjects/build-pcm3-Desktop-Debug/pcm3_autogen/mocs_compilation.cpp
我现在怀疑是不是cmath里用的#include_next <math.h>导致的问题?还是有其他我没注意到的地方?麻烦各位大佬帮忙分析下,谢谢了!
备注:内容来源于stack exchange,提问作者Mustafa Aslan
相关产品推荐
相关产品推荐

