несколько недель назад
потребовалось сбилдить под вин7 прогу которая использует только meson
тяну месон
запускаю
не пашен питон, гуглю, оказывается питон скакойто там версии не поддерживается на вин7
черт
ладно, ищу месон который использует тот питон который еще поддерживался на вин7
благо дело это недалеко, годик так 2021/22
тяну запускаю
месон проекта не поддерживает старый месон
плять
даунгрейжу проект под этот старый месон
опять хрень, не видит компилей под виндой
гуглим оказывается какойто конфиг файлик нужен и в строке запуска указываем типа cross-file или в таком духе
создаю файлик
прописываю все пути до своих компилей и линкеров
запускаю
и нихрена
месон в упор не видит ничего из файла
трачу больше часа гугления где у всех таже проблема и без решения
ладно
тяну сорсы месона той версии с которой играюсь
вставляю всякие трейс выхлопы и пытаюсь найти на чем стопориться
оказывается эти ебланы в месоне зачем то придумали два ини файлика
cross-file и native-file
во всех статьях итд в гугле все ударение на cross-file
на самом деле нахрен оно надо логически нельзя понять
единственное различие в них это в cross-file указывается две секции host и target машин
тогда как в native-file только одна
ладно, кажется разобрался, указываем native-file
запускаю и получаю кучу ошибок во всяких тест конфиругациях проверки всяких разрядностей типов данных
оказывается cl.exe не подходит ключики не те
ладно
у меня есть много клангов
берем прописываем в ини clang.exe
запускаю и вроде даже доходит до создания ninja буилд файла
пытаюсь сбилдить
доходит до промежуточного линкера и ошибка
месон линкует с -lkernel32 вместо просто kernel32.lib
лезу с сорсы месона
оказывается эта хрень не может понять что собирают под виндой
считая что clang только на линуксе может быть
да задолбало
ставлю clang-cl.exe
все разваливается опять на тест конфигурациях
ключики комиляции какие то не подходят
и эти ключики почему то пихает сам месон
может в новом месоне это пофиксили ?
последний шанс месону
тяну последний месон
пытаюсь запустить на старом питоне
он даже запустился
но оказывается формат ини файлов изменился
дайте мне кувалду я схожу к разработчикам месона..
правлю ини файл
запускаю месон
ERROR: Unhandled python OSError. This is probably not a Meson bug, but an issue with your build environment.
ps на месон потрачено около 7 часов
все это время крутился биткон клиент который гонял диск на IO
тупил месон с запусками сказочно
вообщем питон и скорость не совместимы
Cmake не понимаю, генерит там кучу makefile-ов, зачем, почему. Почему сам сразу не билдит. Какой-то GUI доморощенный присобачили. Тоже шляпа. Уходи с C++ на Rust, там всё по уму сделан.
R>несколько недель назад R>потребовалось сбилдить под вин7 прогу которая использует только meson R>тяну месон R>запускаю R>не пашен питон, гуглю, оказывается питон скакойто там версии не поддерживается на вин7 R>черт
Дальше неверная траектория. Если хочется идти против течения, надо быть готовым к затратам. Надо было просто взять виртуалку с win11 и собрать в ней.
ps: добро пожаловать в реальность, дальше будет только хуже.
Здравствуйте, vsb, Вы писали:
vsb>Cmake не понимаю, генерит там кучу makefile-ов, зачем, почему. Почему сам сразу не билдит. Какой-то GUI доморощенный присобачили. Тоже шляпа. Уходи с C++ на Rust, там всё по уму сделан.
На Rust даже нет ни одной GUI-платформы под десктоп и/или моб. Ну вообще нету
Здравствуйте, vsb, Вы писали:
vsb>Cmake не понимаю, генерит там кучу makefile-ов, зачем, почему. Почему сам сразу не билдит.
Потому что CMake это кроссплатформенный генератор makefile'ов.
vsb>Какой-то GUI доморощенный присобачили.
Это опционально, и я бы сказал, что любой GUI только вредит в случае сборки проектов.
vsb>Тоже шляпа. Уходи с C++ на Rust, там всё по уму сделан.
CMake — худшее, что могло случится с С++: в принципе работает и стало де-факто стандартом, но все через одно место.
Здравствуйте, pagid_, Вы писали:
_>Не знаю что такое месон, но история уже издалека попахивает unix-way'ем
Не, unix-way это autotools и ./configure && make && make install, или ручками написанные make файлы. Работает бысто и железобетонно, но не кроссплатформенно.
Здравствуйте, reversecode, Вы писали:
R>не пашен питон, гуглю, оказывается питон скакойто там версии не поддерживается на вин7 R>черт
Я когда вижу, что важная программа на питоне написана, у меня слегка глаз дергается
Это значит, что готовьтесь к приключениям, если хоть чуточку что-то не стандартное захотелось.
Да и стандартное нередко тоже.
Здравствуйте, reversecode, Вы писали:
R>потребовалось сбилдить под вин7 прогу которая использует только meson
Все соевые системы сборки написаны под MAC и Unix-like системы изначально поэтому оно не будет нормально работать в винде, адекватно переноситься в с платформы на платформу, нормально кроскомпилить, работать с 100500 компиляторами или делать что-то ещё. Сейчас есть только cmake который хоть и сложный, но уверенно работает и на нём можно решать какие-то задачи может и с приседаниями, но он будут работать.
Здравствуйте, Skorodum, Вы писали:
S>Не, unix-way это autotools и ./configure && make && make install, или ручками написанные make файлы. Работает бысто и железобетонно, но не кроссплатформенно.
unix-way это когда для того чтобы что-то (причем часто размером в несколько килобайт) заработало нужно обновить несколько десятков пакетов, обновить/установить пару- тройку компиляторов/интепретпторов, обновить ядро, сломать при этом что-то уже работающее.
Если на своих линуксах пусть сношаются с этим как хотят, то при переносе подобных поделий на винду работать с ними нестерпимо больно. Потому обхожу подобное за километры.
Здравствуйте, pagid_, Вы писали:
_>unix-way это когда для того чтобы что-то (причем часто размером в несколько килобайт) заработало нужно обновить несколько десятков пакетов, обновить/установить пару- тройку компиляторов/интепретпторов, обновить ядро, сломать при этом что-то уже работающее.
Это ты про автоматические неотключаемые обновления винды сейчас или у тебя есть другой пример?
Здравствуйте, Skorodum, Вы писали:
S>Это ты про автоматические неотключаемые обновления винды сейчас или у тебя есть другой пример?
Не про обновления. Но если тебе интересно могу и про них. В них важно то, что хоть их разрешай, хоть запрещай, если хочешь и можешь, работоспособность винды и всех программ для неё писанных не нарушается. В отличие от поделий линуксоидов.
)) раст хелов вордл не может сбилдть чтобы не вытянуть 500мег с интернета, уже рассказывал
нельзя не генерировать кучу мейк файлов потому что там сложный граф зависимостей
что бы перекомпилить нужный файл в случае изменения хидеров или самих c/cpp файлов
Здравствуйте, reversecode, Вы писали:
R>win11 не поможет R>у месона ошибка в днк
Хз в докере вроде собирал, но под линухом.
Вообще этот цирк с клоунами, уже не радует. Чем дальше тем больше кросплатворменных инструментов которые нихрена не кроссплатформенные.
дык я почти уверен что я бы собрал под виндой с mingw
поскольку там все +- компиль опции прошли бы
вся беда что месон позицируется как кросплатформенный
но не срослось
к чему этот месон вспомнил
увидел в одной из тем на лоре
что мол месон наше все
под линукс да
наверное он всегда срабатывает
cmake вполне себе кросплатформенный в моих кейсах
предположу что где то с ним тяжело
но пока не столкнулся
народ на лоре приводил кейс где с cmake слишком сложно получается
если найду, оставлю в теме ссылку
In Android.mk you can define individual files to be compiled in ARM mode by adding a '.arm' suffix to the file path:
LOCAL_SRC_FILES := foo.c bar.c.arm
I could not find a way to do this in a cmake file.
а в cmake
# SDL_spinlock.c Needs to be compiled in ARM mode.
# There seems to be no better way currently to set the ARM mode.
# see: https://issuetracker.google.com/issues/62264618
# Another option would be to set ARM mode to all compiled files
cmake_push_check_state()
string(APPEND CMAKE_REQUIRED_FLAGS " -Werror=unused-command-line-argument")
check_c_compiler_flag(-marm HAVE_ARM_MODE)
cmake_pop_check_state()
if(HAVE_ARM_MODE)
set_property(SOURCE "${SDL3_SOURCE_DIR}/src/atomic/SDL_spinlock.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -marm")
set_source_files_properties(src/atomic/SDL_spinlock.c PROPERTIES SKIP_PRECOMPILE_HEADERS 1)
endif()