Всем привет.
У меня есть пет проект, небольшая консольная утилита которая считает рейтинг детишкам для одной спортивной организации. Берёт на вход текстовые файлы с результатами соревнований, обрабатывает их в соответствии с правилами и ведёт учёт рейтинга. Но не суть.
Стек технологий такой: C++23, boost with ICU, fmt, sqlite_orm.
Сборка: в корне проекта есть vcpkg.json на который натравливается vcpkg и собирает в папку third_party все зависимости. Далее в CMakeLists.txt я просто передаю путь к этой папке и всё прекрасно разруливается через find_package (иногда в режиме CONFIG, иногда нет). Соответственно для винды/мака/линукса я написал простенькие bootstrap.bat/bootstrap.sh которые при необходимости выкачивают vcpkg и собирают зависимости.
Основная платформа разработки: macos, clang21.
ICU нужен потому что приходится делать всякие выборки/сортировки русских имён и фамилий в utf-8, а обработка буквы Ë без icu ведёт себя по разному на разных платформах. Ну то есть если я хочу правильно отсортировать вектор не ascii utf-8 строк по алфавиту то тут без icu никак.
Никакого CI я не настраивал, нет на это ресурсов, просто собирал под маком версию для мака, потом загружался в винду и собирал версию для винды.
Сейчас мне стало лень заморачиваться с виндой, ибо я переехал на армовский мак. И хочу завезти кросс компиляцию.
Вопрос: как завезти кросс-компиляцию на моём стеке с минимальной головной болью?
Что я пробовал:
dockcross + mingw64. Но возникла проблема с кросс-компиляцией ICU (где-то внутри скриптов сборки самого ICU он не понимает разницы между хостом в лице докер контейнера и таргетом — виндой). На отладку и патч сборки ICU недостаточно свободного времени.
У меня есть стойкое чувство, что я что-то делаю не так. Поиск в интернете по кросс компиляции ICU мне ничего особого не дал.
Пока что, как временное решение на стороне клиента — WSL где запускается линуксовая версия моей тулзы. Но у людей в этой спортивной организации очень слабые компы и они еле тянут всё это дело, поэтому хочется нативное решение.