Кросскомпиляция под Linux для Windows с помощью CMake

Рейтинг: 0Ответов: 0Опубликовано: 23.05.2023

Делаю телеграмм бота на С++ на линукс, по библиотеке TgBot, возникла проблема с перенесением на windows. Обычная компиляция через cmake не выдаёт ошибок (CMakeLists с документации) Но когда я пытаюсь сделать исполняемый файл для windows с помощью следующих строк: (x86_64-w64-mingw32-gcc скачен)

set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-c++)
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)

set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32/)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Компиляция перестаёт видеть библиотеку TgBot:

cmake --build .
Consolidate compiler generated dependencies of target echobot.exe
[ 50%] Building CXX object CMakeFiles/echobot.exe.dir/main.cpp.o
/home/egor-vubni/c++/tgbot/main.cpp:2:10: fatal error: tgbot/tgbot.h: Нет такого файла или каталога
    2 | #include <tgbot/tgbot.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/echobot.exe.dir/build.make:76: CMakeFiles/echobot.exe.dir/main.cpp.o] Ошибка 1
gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/echobot.exe.dir/all] Ошибка 2
gmake: *** [Makefile:91: all] Ошибка 2

Скрипт с документации TgBot

Нашёл где-то на просторах интернета, что надо поставить строку project после этих строк, но после того, как я сделал это, ошибка стала другой:

  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found
  version "3.0.2")
Call Stack (most recent call first):
  /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.22/Modules/FindOpenSSL.cmake:574 (find_package_handle_standard_args)
  CMakeLists.txt:21 (find_package)


-- Configuring incomplete, errors occurred!
See also "/home/egor-vubni/c++/tgbot/build/CMakeFiles/CMakeOutput.log".
See also "/home/egor-vubni/c++/tgbot/build/CMakeFiles/CMakeError.log".

Перестало находить зависимость

Ответы

Ответов пока нет.