Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: ioctl  
Дата: 08.04.21 07:14
Оценка:
Есть пример кода, на следующих технологиях.

C++, Boost (system, filesystem), SDL, sockets, система сборки CMake.

Собирается и работает под Ubuntu.

Требуется собрать под Windows 10 на уровне "лишь бы хоть как-то заработало".

Как это сделать с минимальными изменениями в коде?

Пробовал cygwin, но с полпинка работать не захотело. А именно, в cygwin я поставил Boost и SDL, но CMake из под cygwin отказывается находить Boost и SDL.
Отредактировано 08.04.2021 7:38 ioctl . Предыдущая версия .
boost c++ sockets cross-platform porting sdl
Re: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: LaptevVV Россия  
Дата: 08.04.21 08:00
Оценка: 2 (1)
Msys2?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: ioctl  
Дата: 08.04.21 08:48
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Msys2?


Выглядит обещающе, а нет ли более эффективного способа собрать дистрибутив, чем наковырять зависимостей с помощью ntldd?
Re: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 08.04.21 09:06
Оценка: 11 (2) +2
Здравствуйте, ioctl, Вы писали:

I>Как это сделать с минимальными изменениями в коде?


Я бы зашёл через mingw. Возможно, для простоты скачал бы Qt mingw + QtCreator, чтобы всё было бы уже настроено.
Re[3]: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: LaptevVV Россия  
Дата: 08.04.21 09:06
Оценка:
LVV>>Msys2?
I>Выглядит обещающе, а нет ли более эффективного способа собрать дистрибутив, чем наковырять зависимостей с помощью ntldd?
Знаешь, понятия не имею.
Я когда-то поставил на винде, чтобы въехать в типовые вещи линукс, и оно таки помогло.
Теперь я это пишу из Альт Линукс и могу сказать, что консоль в msys2 хорошо эмулируется.
MinGW из коробки и POSIX тоже.
Но больших проектов собирать не приходилось, только небольшие учебные.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: Muxa  
Дата: 08.04.21 10:46
Оценка: 2 (1) +2
I>Пробовал cygwin, но с полпинка работать не захотело. А именно, в cygwin я поставил Boost и SDL, но CMake из под cygwin отказывается находить Boost и SDL.
Так ты укажи симэйку где лежат Boost и SDL
cmake -DBoost_INCLUDE_DIR=/path/to/boost/include -DBoost_LIB_DIR=/path/to/boost/lib -DSDL_INCLUDE_DIR=/path/to/sdl/include -DSDL_LIB_DIR=/path/to/sdl/lib ...
Re: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: ioctl  
Дата: 08.04.21 11:00
Оценка:
Здравствуйте, ioctl, Вы писали:


I>Требуется собрать под Windows 10 на уровне "лишь бы хоть как-то заработало".


В общем, почти получилось на msys2.

Проблемы вылезли там, где не ожидал.
С boost и SDL все ОК, работает.

netdb.h не находит, а еще консольный вывод не отображается.
Re[2]: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: ioctl  
Дата: 08.04.21 11:03
Оценка:
Здравствуйте, ioctl, Вы писали:

I>Здравствуйте, ioctl, Вы писали:


I>netdb.h не находит, а еще консольный вывод не отображается.


Т.е. как будто Беркли сокеты не поддержаны.
Re[3]: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: Mr.Delphist  
Дата: 08.04.21 13:26
Оценка:
Здравствуйте, ioctl, Вы писали:

I>>netdb.h не находит, а еще консольный вывод не отображается.

I>Т.е. как будто Беркли сокеты не поддержаны.

MS чутка по другому сокетные заголовки называет — можно разрулить условной компиляцией. Плюс кое-какие отличия есть в структурах/контрактах — но это удавалось обходить тоже.
Re: Докер
От: johny5 Новая Зеландия
Дата: 11.04.21 08:52
Оценка: +1
Если UI нет — оберни в докер.
Re: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: SomeOne_TT  
Дата: 11.04.21 08:58
Оценка: +1
Здравствуйте, ioctl, Вы писали:

I>Есть пример кода, на следующих технологиях.

I>
I>C++, Boost (system, filesystem), SDL, sockets, система сборки CMake.

I>Собирается и работает под Ubuntu.


I>Требуется собрать под Windows 10 на уровне "лишь бы хоть как-то заработало".


WSL2 не вариант?
Re: Портировать C++ с Linux x86_64 на Windows 10 x86_64
От: serg_joker Украина  
Дата: 14.04.21 06:42
Оценка: +1
Здравствуйте, ioctl, Вы писали:

I>Есть пример кода, на следующих технологиях.

I>
I>C++, Boost (system, filesystem), SDL, sockets, система сборки CMake.
Я бы пошёл путём msvc+cmake+vcpkg (sdl/boost порты в vcpkg есть).
Сетевой уровень или придётся сделать под условной компиляцией (в винде хидеры и апи отличаетя), или (как сделал бы я) заменить на какую-то прослойку. Коль скоро в проекте есть SDL, то можно взять их же SDL_NET (тоже есть порт в vcpkg).
vcpkg поддерживается и на linux, хорошо интегрируется с CMake.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.