Я портирую проект Cmake с Linux на Windows. Он использует сокеты, поэтому использует pthread в Linux и нуждается в Winsock в Windows.
Проект компилируется в Linux с использованием кросс-компиляции для создания бинарных файлов Windows.
Проект уже хорошо компилируется, и при сборке для Linux имеется переключатель для связи pthreads и winsock для Windows.
Однако существует проблема с подключением сокетов, похоже, что winsock не найден.
Вот часть файла Cmake, который я использую:
find_library(lib1 wsock32)
find_library(lib2 ws2_32)
message("${lib1} ${lib2}")
if (WIN32)
target_link_libraries (TaskTool wsock32 ws2_32)
endif(WIN32)
А вот вывод, который я получаю:
lib1-NOTFOUND lib2-NOTFOUND
-- Configuring done
-- Generating done
-- Build files have been written to:
Linking CXX executable TaskTool.exe
ToolsLib/libToolsLib.a(networkwaker.cpp.obj):networkwaker.cpp:(.text+0x522): referência indefinida a `_imp__socket@12'
ToolsLib/libToolsLib.a(networkwaker.cpp.obj):networkwaker.cpp:(.text+0x559): referência indefinida a `_imp__setsockopt@20'
ToolsLib/libToolsLib.a(networkwaker.cpp.obj):networkwaker.cpp:(.text+0x596): referência indefinida a `_imp__bind@12'
ToolsLib/libToolsLib.a(networkwaker.cpp.obj):networkwaker.cpp:(.text+0x5b0): referência indefinida a `_imp__inet_addr@4'
ToolsLib/libToolsLib.a(networkwaker.cpp.obj):networkwaker.cpp:(.text+0x5c3): referência indefinida a `_imp__htons@4'
ToolsLib/libToolsLib.a(networkwaker.cpp.obj):networkwaker.cpp:(.text+0x614): referência indefinida a `_imp__sendto@24'
Как правильно добавить / связать winsock? Я понимаю, что winsock недоступен в Linux, поскольку это библиотека Windows.
Можно ли установить стандартный пакет для его установки? (например, apt-get install windowssdk ...).
Должен ли я скопировать его вручную и связать с установкой Windows?
Что мне нужно добавить в файл цепочки инструментов Cmake?
Вот файл цепочки инструментов, который я использую:
SET(CMAKE_SYSTEM_NAME Windows)
SET(CMAKE_C_COMPILER /usr/bin/i686-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER /usr/bin/i686-w64-mingw32-g++)