@dalbio

Ошибка D8021 недопустимый числовой аргумент «/Wno-error=invalid-offsetof» откуда может появиться данная проблема и как решить?

Есть проект, использующий библиотеки qt. До этого он спокойно запускался под visual studio (19/22 preview). Но вчера почему-то перестал, помогите решить проблему.
Развёрнутый вариант ошибки (вывод сборки):
/nologo /TP -DMINGW_HAS_SECURE_API=1 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN32_WINNT=0x0601 -D_WIN64 -ID:\fictional-system\out\build\x64-Debug -ID:\fictional-system -ID:\fictional-system\out\build\x64-Debug\fict_autogen\include -external:I C:\Qt\6.1.3\mingw81_64\include\QtWidgets -external:I C:\Qt\6.1.3\mingw81_64\include -external:I C:\Qt\6.1.3\mingw81_64\include\QtCore -external:I C:\Qt\6.1.3\mingw81_64\mkspecs\win32-g++ -external:I C:\Qt\6.1.3\mingw81_64\include\QtGui -external:W0 /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -MDd -Wno-error=invalid-offsetof -std:c++17 /showIncludes /FoCMakeFiles\fict.dir\main.cpp.obj /FdCMakeFiles\fict.dir\ /FS -c D:\fictional-system\main.cpp

Всё что вывело окно сборки:
>------ Сборка запущено: проект: CMakeLists, конфигурация: Debug ------
  [1/3] Building CXX object CMakeFiles\fict.dir\main.cpp.obj
  FAILED: CMakeFiles/fict.dir/main.cpp.obj 
  C:\PROGRA~1\MICROS~2\2022\Preview\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe  /nologo /TP -DMINGW_HAS_SECURE_API=1 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN32_WINNT=0x0601 -D_WIN64 -ID:\fictional-system\out\build\x64-Debug -ID:\fictional-system -ID:\fictional-system\out\build\x64-Debug\fict_autogen\include -external:I C:\Qt\6.1.3\mingw81_64\include\QtWidgets -external:I C:\Qt\6.1.3\mingw81_64\include -external:I C:\Qt\6.1.3\mingw81_64\include\QtCore -external:I C:\Qt\6.1.3\mingw81_64\mkspecs\win32-g++ -external:I C:\Qt\6.1.3\mingw81_64\include\QtGui -external:W0 /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -MDd -Wno-error=invalid-offsetof -std:c++17 /showIncludes /FoCMakeFiles\fict.dir\main.cpp.obj /FdCMakeFiles\fict.dir\ /FS -c D:\fictional-system\main.cpp
D:\fictional-system\out\build\x64-Debug\cl : командная строка error D8021: недопустимый числовой аргумент "/Wno-error=invalid-offsetof"
  [2/3] Building CXX object CMakeFiles\fict.dir\fict_autogen\mocs_compilation.cpp.obj
  FAILED: CMakeFiles/fict.dir/fict_autogen/mocs_compilation.cpp.obj 
  C:\PROGRA~1\MICROS~2\2022\Preview\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe  /nologo /TP -DMINGW_HAS_SECURE_API=1 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DUNICODE -DWIN32 -DWIN64 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN32_WINNT=0x0601 -D_WIN64 -ID:\fictional-system\out\build\x64-Debug -ID:\fictional-system -ID:\fictional-system\out\build\x64-Debug\fict_autogen\include -external:I C:\Qt\6.1.3\mingw81_64\include\QtWidgets -external:I C:\Qt\6.1.3\mingw81_64\include -external:I C:\Qt\6.1.3\mingw81_64\include\QtCore -external:I C:\Qt\6.1.3\mingw81_64\mkspecs\win32-g++ -external:I C:\Qt\6.1.3\mingw81_64\include\QtGui -external:W0 /DWIN32 /D_WINDOWS /GR /EHsc /Zi /Ob0 /Od /RTC1 -MDd -Wno-error=invalid-offsetof -std:c++17 /showIncludes /FoCMakeFiles\fict.dir\fict_autogen\mocs_compilation.cpp.obj /FdCMakeFiles\fict.dir\ /FS -c D:\fictional-system\out\build\x64-Debug\fict_autogen\mocs_compilation.cpp
D:\fictional-system\out\build\x64-Debug\cl : командная строка error D8021: недопустимый числовой аргумент "/Wno-error=invalid-offsetof"
  ninja: build stopped: subcommand failed.


CMake:
cmake_minimum_required(VERSION 3.19)
project(FictionalSystem)
set(username $ENV{USERNAME})

#set(CMAKE_CXX_COMPILER "C:/Program Files/JetBrains/CLion 2021.3.3/bin/mingw/bin/g++.exe")

if (WIN32)
    if (username MATCHES "Вячеслав")
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    set(CMAKE_PREFIX_PATH "C:\\Qt\\6.1.3\\mingw81_64\\lib\\cmake")
    set(EXECUTABLE_OUTPUT_PATH "..\\..\\..\\release")
    endif (username MATCHES "Вячеслав")
    message("check")
else()
    set(CMAKE_PREFIX_PATH "~/Qt/6.1.3/mingw81_64/lib/cmake")
endif (WIN32)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt6Widgets REQUIRED)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

# Build and link
add_library (
    PICS 
    "src/pics/set/pics.h"
    "src/pics/set/lbp.h"
)

add_library (
    NET
    #"src/net/templates/algen.h"
    #"src/net/countmask.h"
    #"src/net/structure/prefim.h"
    #"src/net/templates/create_w.h"
)
add_library(
    LEARNING
    "src/learning/adaboost.h"
  #  "src/learning/countmask.h"
   # "src/learning/create_w.h"
)
add_library(
    STRUCT
    "src/struct/algen.h"
    "src/struct/prefim.h"
    "src/struct/shab.h"
    "src/struct/sigmoid.h"
)

add_library(
    SRC
    "src/learning.h"
    "src/net.h"
    "src/pics_get.h"
    "src/pics_set.h"
)
add_executable(fict main.cpp ${SRC})

target_link_libraries(fict Qt6::Widgets)
  • Вопрос задан
  • 556 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ariox41
Строка
set(CMAKE_PREFIX_PATH "C:\\Qt\\6.1.3\\mingw81_64\\lib\\cmake")

намекает, что вы пытаетесь подключить бинарники, скомпилированные при помощи mingw, к проекту, собираемому при помощи msvc. Это в любом случае не сработает, ABI несовместимы.

В данном случае это также может быть причиной ошибки, т.к. вы подключаете файлы конфигурации cmake, которые содержат флаги компилятора, которые при сборке были прописаны как публичная зависимость. Флаги от mingw, естественно, недопустимы для msvc.

Проще говоря, либо установите версию Qt, соответствующую вашему компилятору, либо установите msys2, и используйте mingw + Qt из пакетов (но для mingw нет QWebEngine).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы