Сборка libzmq в Qt (MinGW64 + Cmake)

Рейтинг: -1Ответов: 1Опубликовано: 31.07.2023

При сборке проекта в кьют креаторе возникает ошибка "sys/socket.h: No such file or directory". Окружение Win11, Qt Creator 6.5.1, CMake 3.24 + MinGW 11.2.0 64. Да, хедер socket.h unix-овый, но CMakeLists.txt libzmq вроде как настроен верно, потому что в терминале сборка этой же либы на тех же тулзах происходит корректно. В чём может быть проблема? libzmq и cppzmq тянутся как гит сабмодули, нужно чтоб они линковались с проектом.

CMakeLists проекта:

cmake_minimum_required(VERSION 3.21)

project(Name 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)

set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)

set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)

set(DEPENDENCIES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/dependencies)

include_directories(${INCLUDE_DIR})

add_subdirectory(${DEPENDENCIES_DIR}/libzmq)
add_subdirectory(${DEPENDENCIES_DIR}/cppzmq)

set(PROJECT_SOURCES ${INCLUDE_DIR}/master.h
                    ${SRC_DIR}/master.cpp
                    ${SRC_DIR}/main.cpp
    )

add_executable(Name
  ${PROJECT_SOURCES}
)

target_link_libraries(Name PRIVATE libzmq cppzmq)

Ответы

▲ 2

Теперь я точно убедился, что дефолтный сборочный комплект Qt Creator под win не умеет собирать libzmq:

mingw32-make

Scanning dependencies of target libzmq
[  0%] Building CXX object CMakeFiles/libzmq.dir/src/ws_address.cpp.obj
[  1%] Building CXX object CMakeFiles/libzmq.dir/src/ws_connecter.cpp.obj
[  1%] Building CXX object CMakeFiles/libzmq.dir/src/ws_decoder.cpp.obj
[  1%] Building CXX object CMakeFiles/libzmq.dir/src/ws_encoder.cpp.obj
[  1%] Building CXX object CMakeFiles/libzmq.dir/src/ws_engine.cpp.obj
[  2%] Building CXX object CMakeFiles/libzmq.dir/src/ws_listener.cpp.obj
[  2%] Building C object CMakeFiles/libzmq.dir/external/sha1/sha1.c.obj
[  2%] Building CXX object CMakeFiles/libzmq.dir/src/precompiled.cpp.obj
[  2%] Building CXX object CMakeFiles/libzmq.dir/src/address.cpp.obj
In file included from dependencies\libzmq\src\ipc_address.hpp:13:10: fatal error: sys/socket.h: No such file or directory
   13 | #include <sys/socket.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.

На GitHub есть issue на эту тему, но мне решение показалось полумерой.

[zeromq] Fix mingw build issues (24711)

Unable to build libzmq 4.3.4 with mingw in windows due to sys/socket.h include in src/ipc_address.hpp

Успехов всем страждущим на винде :)