home.social

#cmake — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #cmake, aggregated by home.social.

fetched live
  1. CW: CMake mention

    I'm still extremely curious about who had the funny idea to make CMake Presets the very top of the precedence chain. I mean...seriously? I really don't get it. Those are things you check into source control. How do you not make their settings overrideable?!

    I can only imagine that a build engineer once grabbed the last bottle of good Whiskey and they had to content with Jim, Jack or Jonny that evening. And this is their revenge.

    #CMake

  2. CW: CMake mention

    I'm still extremely curious about who had the funny idea to make CMake Presets the very top of the precedence chain. I mean...seriously? I really don't get it. Those are things you check into source control. How do you not make their settings overrideable?!

    I can only imagine that a build engineer once grabbed the last bottle of good Whiskey and they had to content with Jim, Jack or Jonny that evening. And this is their revenge.

    #CMake

  3. Save yourself repetitive typing: CMake can read configuration values straight from environment variables, letting you set your preferred generator, enable compile_commands.json, and more - once in your shell config, applied to every build folder from then on.

    For example: set CMAKE_GENERATOR=Ninja to skip typing -G Ninja every time.
    It's not just cmake, either - ctest reads environment variables too. Set CTEST_OUTPUT_ON_FAILURE=1 and you'll always see output from failing tests.

    This complements CMake presets rather than replacing them: presets define per-project option sets, environment variables carry your personal defaults into every new project you create.

    Full details: kdab.com/%C2%B5-boosting-your-

    #CMake #CPlusPlus #VSCode

  4. Save yourself repetitive typing: CMake can read configuration values straight from environment variables, letting you set your preferred generator, enable compile_commands.json, and more - once in your shell config, applied to every build folder from then on.

    For example: set CMAKE_GENERATOR=Ninja to skip typing -G Ninja every time.
    It's not just cmake, either - ctest reads environment variables too. Set CTEST_OUTPUT_ON_FAILURE=1 and you'll always see output from failing tests.

    This complements CMake presets rather than replacing them: presets define per-project option sets, environment variables carry your personal defaults into every new project you create.

    Full details: kdab.com/%C2%B5-boosting-your-

  5. C++-техрадар: что разработчики действительно готовы брать в работу

    В мае на конференциях C++ Russia и HolyJS мы предложили участникам оценить технологии, инструменты и инженерные практики, с которыми они работают или за которыми следят. Так появились данные для двух технических радаров: по экосистеме C++ и по JavaScript. Сырые цифры сами по себе рассказывают немного, поэтому мы отдали результаты на разбор эксперту. Виктор Новиков, руководитель группы разработки в «Лаборатории Касперского», посмотрел на распределения голосов и поделился своим мнением, почему CMake уверенно побеждает, а PostgreSQL раскалывает аудиторию пополам. В этой статье — его анализ C++-части исследования. Про техрадар JavaScript мы расскажем в другой статье. Посмотреть радар и принять участие в голосовании можно на странице проекта .

    habr.com/ru/companies/kaspersk

    #с++ #postgresql #cmake #bazel #git #tech_radar #bash #gdb #vs_code #clang

  6. How to Build a Typed JSON Configuration Library in Modern C++: From JSON Parsing to Compile-Time Reflection: Build a Production-Ready Header-Only Configuration Library with C++23 by Eduard Ghergu, Ph.D. is the featured course 🎓 on Leanpub!

    Ever wondered how configuration libraries work under the hood? Most C++ courses teach you how to use libraries.

    Link: leanpub.com/courses/leanpub/mo

    #C_and_cpp #Cmake #Software_engineering

  7. How to Build a Typed JSON Configuration Library in Modern C++: From JSON Parsing to Compile-Time Reflection: Build a Production-Ready Header-Only Configuration Library with C++23 by Eduard Ghergu, Ph.D. is the featured course 🎓 on Leanpub!

    Ever wondered how configuration libraries work under the hood? Most C++ courses teach you how to use libraries.

    Link: leanpub.com/courses/leanpub/mo

    #C_and_cpp #Cmake #Software_engineering

  8. No More Helloworlds. Build a Real C++ App: Master Real C++ Development: Architecture, Git, Testing & CMake in One Practical Workflow by Nikolai Kutiavin is the featured book 📖 on Leanpub!

    You know C++ syntax. Now learn how to structure, build, test, and maintain a real C++ application.

    Link: leanpub.com/nomorehelloworlds

    #C_and_cpp #Cmake #Software_architecture #Automated_software_testing

  9. No More Helloworlds. Build a Real C++ App: Master Real C++ Development: Architecture, Git, Testing & CMake in One Practical Workflow by Nikolai Kutiavin is the featured book 📖 on Leanpub!

    You know C++ syntax. Now learn how to structure, build, test, and maintain a real C++ application.

    Link: leanpub.com/nomorehelloworlds

    #C_and_cpp #Cmake #Software_architecture #Automated_software_testing

  10. i think #cmake deserves serious recognition for making a high level abstraction over both Linux build systems, and MSVC + (!) #msbuild. i know this is one of the purposes of having a cross-platform meta-build system to begin with, but it's easy to underestimate the difficulty of getting it into a format that works with the Visual Studio toolchain. it seems waaaayyyy more involved than just getting a Clang + #Ninja project to compile on Windows.

    with MSBuild, there is so much undocumented behavior to reverse engineer, concepts that don't cleanly match systems in the Makefile family. MSBuild is actually more of a declarative format with complex logic encoded in the vendored property and target files, rather than just having a self-contained set of rules. despite this, CMake seems to maintain good parity with MSBuild, e.g. with ARM64EC support

  11. i think #cmake deserves serious recognition for making a high level abstraction over both Linux build systems, and MSVC + (!) #msbuild. i know this is one of the purposes of having a cross-platform meta-build system to begin with, but it's easy to underestimate the difficulty of getting it into a format that works with the Visual Studio toolchain. it seems waaaayyyy more involved than just getting a Clang + #Ninja project to compile on Windows.

    with MSBuild, there is so much undocumented behavior to reverse engineer, concepts that don't cleanly match systems in the Makefile family. MSBuild is actually more of a declarative format with complex logic encoded in the vendored property and target files, rather than just having a self-contained set of rules. despite this, CMake seems to maintain good parity with MSBuild, e.g. with ARM64EC support

  12. Делаем модуль на C++ для приложения React Native

    Я не планировал переписывать приложение React Native на C++ . Большая часть приложения прекрасно работала на TypeScript: экраны, формы, валидация, навигация, логика продукта — все это находилось именно там, где нужно. Проблема была более узкой и специфичной: нам нужно было, чтобы один фрагмент логики работал с производительностью, близкой к нативной, оставался общим для Android и iOS и при этом был доступен из JavaScript через обычный типизированный API. Поначалу все звучало слишком просто. Написать интерфейс на TypeScript, позволить Codegen генерировать контракты, перенести основную логику на C++, зарегистрировать модуль на обеих платформах и использовать его из React Native как любой другой модуль. Спойлер: да, это работает. Чистый модуль Turbo Native на C++ действительно может дать вам одну реализацию для Android и iOS, типизированную границу через Codegen, меньшие накладные расходы, чем у старого Bridge, и удобный способ повторного использования существующего кода на C или C++ внутри приложения React Native. Спойлер номер два: код на C++ — это не самая сложная часть. Самое сложное начинается вокруг: CMake, NDK, Xcode, Objective-C++, время жизни среды выполнения JSI, регистрация модулей, границы потоков, владение памятью, обработка ошибок, сборки Expo, сторонние библиотеки и вопрос, который никто не хочет задавать слишком поздно — действительно ли этот модуль должен быть нативным? В этой статье я подробно расскажу о создании C++ Turbo Native модуля для React Native: где этот подход полезен, где он добавляет скрытые затраты на поддержку, чем отличается регистрация для Android и iOS, почему важна обертка TypeScript и почему сам TurboModule должен оставаться «тонким».

    habr.com/ru/articles/1064564/

    #React_Native #C++ #TurboModules #JSI #TypeScript #Codegen #Android_NDK #CMake #Xcode

  13. Today's cursed #CMake:

    > if bringing external dependencies directly into the build, such as with FetchContent or a direct call to add_subdirectory(), and one of those dependencies has such a call to option(BUILD_SHARED_LIBS ...), the top level project must also call option(BUILD_SHARED_LIBS ...) before bringing in its dependencies. Failure to do so can lead to different behavior between the first and subsequent CMake runs.

    That's some nasty linker error to debug

    cmake.org/cmake/help/latest/va

  14. Today's cursed #CMake:

    > if bringing external dependencies directly into the build, such as with FetchContent or a direct call to add_subdirectory(), and one of those dependencies has such a call to option(BUILD_SHARED_LIBS ...), the top level project must also call option(BUILD_SHARED_LIBS ...) before bringing in its dependencies. Failure to do so can lead to different behavior between the first and subsequent CMake runs.

    That's some nasty linker error to debug

    cmake.org/cmake/help/latest/va

  15. Как поднять userver без Docker на Ubuntu

    Docker для userver удобен, но не обязателен. Как поставить зависимости через apt, собрать сервис нативно на Ubuntu и не утонуть в первой компиляции.

    habr.com/ru/articles/1064074/

    #userver #C++ #CMake #Ubuntu #без_Docker #native #Ninja #backend #open_source

  16. How to Build a Typed JSON Configuration Library in Modern C++: From JSON Parsing to Compile-Time Reflection: Build a Production-Ready Header-Only Configuration Library with C++23 by Eduard Ghergu, Ph.D. is the featured course 🎓 on Leanpub!

    Ever wondered how configuration libraries work under the hood? Most C++ courses teach you how to use libraries.

    Link: leanpub.com/courses/leanpub/mo

    #C_and_cpp #Cmake #Software_engineering

  17. How to Build a Typed JSON Configuration Library in Modern C++: From JSON Parsing to Compile-Time Reflection: Build a Production-Ready Header-Only Configuration Library with C++23 by Eduard Ghergu, Ph.D. is the featured course 🎓 on Leanpub!

    Ever wondered how configuration libraries work under the hood? Most C++ courses teach you how to use libraries.

    Link: leanpub.com/courses/leanpub/mo

    #C_and_cpp #Cmake #Software_engineering

  18. I build #CMake from sources recently and was a little bit annoyed, that the requirement to use OpenSSL Version 3 or later, was detected very late in the build process and thus, it wasted an hour.

    I created a ticket in CMakes issue tracker, asking if it would be possible to verify that requirement earlier and instead of a response, someone (Tyler Yankee) just fixed it!

    Wonderful!!

  19. I build #CMake from sources recently and was a little bit annoyed, that the requirement to use OpenSSL Version 3 or later, was detected very late in the build process and thus, it wasted an hour.

    I created a ticket in CMakes issue tracker, asking if it would be possible to verify that requirement earlier and instead of a response, someone (Tyler Yankee) just fixed it!

    Wonderful!!

  20. Building a Typed JSON Configuration Library in Modern C++: From JSON Parsing to Compile-Time Reflection: Build a Production-Ready Header-Only Configuration Library with C++23 by Eduard Ghergu, Ph.D. is the featured course 🎓 on Leanpub!

    Ever wondered how configuration libraries work under the hood?

    Link: leanpub.com/courses/leanpub/mo

    #c_and_cpp #cmake #software_engineering

  21. Building a Typed JSON Configuration Library in Modern C++: From JSON Parsing to Compile-Time Reflection: Build a Production-Ready Header-Only Configuration Library with C++23 by Eduard Ghergu, Ph.D. is the featured course 🎓 on Leanpub!

    Ever wondered how configuration libraries work under the hood?

    Link: leanpub.com/courses/leanpub/mo

    #c_and_cpp #cmake #software_engineering

  22. The next thing - I've update my BYSU.

    Now you can specify extensions of files those will be copied. Or leave necessarily fields empty for copying every file.

    You can download the last release from here 👉 codeberg.org/xolatgames/BYSU/r

    Or view its source code here 🏔️👉 codeberg.org/xolatgames/BYSU

    #cpp #cplusplus #sdl #sdl3 #backup #backups #app #apps #soft #software #opensource #imgui #dearimgui #sqlite #sqlite3 #cmake #codelite #codeberg

  23. Weird. If I configure my project using CMake the old way (-B binary dir, -D for cache variables), it configures and builds just fine.

    If I use CMakePresets.json and put the same cache variables in there, the build stops working - certain compiler features are suddently required, there are linkage problems among dependencies, etc.

    Why?

    #cmake #cpp

  24. Weird. If I configure my project using CMake the old way (-B binary dir, -D for cache variables), it configures and builds just fine.

    If I use CMakePresets.json and put the same cache variables in there, the build stops working - certain compiler features are suddently required, there are linkage problems among dependencies, etc.

    Why?

  25. Greetings everyone! ✌️

    Here's another one update of "Dima wants crisps 🍟".

    I have add spruces! 🌲🌲🌲😁 (if it say shortly)

    fediverse.tv/w/9J23vAxE34VXS5v 🎬

    You can download the new version from Codeberg 🏔️👉 codeberg.org/xolatgames/Dima-w

    Or you can also download this game from my website, as always 👉 xolat.games/search-by-tags/glf

    Thanks for reading! And I wish ya a good day! 😉

    #opengl #gamedev #cpp #cplusplus #glfw #blender #blender3d #gimp #gimp3 #opensource #codeberg #assimp #cmake #glfw3 #bullet3 #3d #codelite

  26. «У меня работает»: десять способов узнать, что нет

    Я думал, проект готов к релизу. CI думал иначе — и оказался прав десять раз. История про то, что видно только на чистом раннере. «Полностью готовый» и локально зелёный проект — а первый же полный прогон CI вскрыл десяток скрытых проблем: версия CMake на Ubuntu 22.04, строгий GCC 11, артефакты с 403 от CDN, ASan под valgrind, недоступный из сети реестр и другие. Показываю каждую проблему с настоящим сообщением об ошибке и решением, а заодно — как поднял свой раннер, выпустил релиз руками без раннеров и ускорил пайплайн с 53 до 15 минут. Мораль: CI ловит ровно то, что невидимо на машине разработчика, — версии инструментов, окружение и сеть.

    habr.com/ru/articles/1044402/

    #gitlab #gitlabrunner #gitlabci #cmake #docker #тестирование

  27. And another one new! 📰

    I've rename "Dima stand 🧍‍♂️" on "Dima wants crisps 🍟".

    And now this means that Dima now hasn't a plan to stands only 🙂. He also want now to walk, jump, and do more actions! 😎

    The repository now available by this new link 👉 codeberg.org/xolatgames/Dima-w

    #game #games #3d #3dgame #blender #opengl #glfw #cmake #cpp #cplusplus #opensource #gamedev #platformer #blender3d #codeberg #gimp #gimp3 #assimp #bullet3 #3dplatformer

  28. And another one new! 📰

    I've rename "Dima stand 🧍‍♂️" on "Dima wants crisps 🍟".

    And now this means that Dima now hasn't a plan to stands only 🙂. He also want now to walk, jump, and do more actions! 😎

    The repository now available by this new link 👉 codeberg.org/xolatgames/Dima-w

    #game #games #3d #3dgame #blender #opengl #glfw #cmake #cpp #cplusplus #opensource #gamedev #platformer #blender3d #codeberg #gimp #gimp3 #assimp #bullet3 #3dplatformer

  29. Hi folks! ✌️

    Here's a build of BYSU 🙂👉 codeberg.org/xolatgames/BYSU/r

    For who ones who doesn't know for what that - it's the app that will help you to makes backups of your games' saves (or just copies files and folders from one folder to other)

    #cpp #cplusplus #sdl3 #sdl #cmake #backup #backups #app #apps #soft #software #opensource #dev #development #build #release #tool #utility #tools #utilities #linux #codeberg #imgui #dearimgui

  30. LLMs abusing my GPU, whatever. Pay me. I just want cmake and gcc to use my bloody GPU. Anyone have any tips? #gcc #cmake

  31. LLMs abusing my GPU, whatever. Pay me. I just want cmake and gcc to use my bloody GPU. Anyone have any tips? #gcc #cmake

  32. Irregular reminder about #pythonbuilder, a build system in Python.

    codeberg.org/harald/pythonbuil

    I use it for 20 personal projects with Java, Python, Typescript, Elisp and I am quite happy with it. Using it means to write a Python script to define the targets to build and their dependencies.

    No magic, just plain Python.

    For some theory, read: codeberg.org/harald/pythonbuil

    Detailed docs: docs.miamao.de/@main/pythonbui

    #pythonbuilder #build #buildSystem #gradle #maven #cmake #npm

  33. Current setup:

    IDEs: #Gram Editor @krig Fantastic editor, Zed without the AI crap, more control on your extensions and LSPs.

    CLion: The University where I teach makes you choose between Jetbrains or VisualStudio. Not touching MS products so CLion it is.

    Current languages:

    #Vala by @vala_lang
    #Zig by @andrewrk
    #python #c #cpp. I'm teaching stuff with these at the University.

    Build systems #meson #cmake and #zig depending on the project.

    I've been enjoying this arrangement for a while 😄.

  34. Current setup:

    IDEs: #Gram Editor @krig Fantastic editor, Zed without the AI crap, more control on your extensions and LSPs.

    CLion: The University where I teach makes you choose between Jetbrains or VisualStudio. Not touching MS products so CLion it is.

    Current languages:

    #Vala by @vala_lang
    #Zig by @andrewrk
    #python #c #cpp. I'm teaching stuff with these at the University.

    Build systems #meson #cmake and #zig depending on the project.

    I've been enjoying this arrangement for a while 😄.

  35. Hi folks! ✌️

    Here's a little app that I've made for this one day.

    👉 codeberg.org/xolatgames/BYSU

    It will help you to create backups of your games' saves.

    It has ugly, but workable GUI, and let you create a "backups' list" for multiple games.

    Then you will need to push "Create backups!" button, and then your backups was be made.

    Thanks for reading, and I will see you in the next time! 😉👋✌️

    #backups #imgui #sdl #sdl3 #cpp #cplusplus #cmake #opensource #sqlite #sqlite3 #app #apps #soft #software

  36. A NEW way to use STM32CubeMX and STM32CubeIDE - STM32 Short #12

    A side-effect (possibly unintentional) of ST splitting up STM32CubeMX and STM32CubeMX2 is that one can now use CMake files throughout - even when using STM32CubeIDE. This video will explain how.

    This approach was not possible with the pre-2.0.0 version of STM32CubeIDE but it is actually much better than the old.

    #STM32 #Tutorial #STM32CubeMX #STM32CubeIDE #CMake #STM32World

    youtube.com/watch?v=2tLybzseA0k

  37. A NEW way to use STM32CubeMX and STM32CubeIDE - STM32 Short #12

    A side-effect (possibly unintentional) of ST splitting up STM32CubeMX and STM32CubeMX2 is that one can now use CMake files throughout - even when using STM32CubeIDE. This video will explain how.

    This approach was not possible with the pre-2.0.0 version of STM32CubeIDE but it is actually much better than the old.

    #STM32 #Tutorial #STM32CubeMX #STM32CubeIDE #CMake #STM32World

    youtube.com/watch?v=2tLybzseA0k

  38. Hi folks! ✌️

    Here's a little update of my game about Dima who doesn't just stand now, but also can jumps and walks 🏃‍♂️

    👉 fediverse.tv/w/vuGvDwkhYvLgSWP

    In this update I've remove that "dumb" background, and change it on a normal one.

    And also I've fix the hairs of Dima 💇‍♂️

    #opengl #cpp #cplusplus #cmake #codelite #glfw #glfw3 #opengl3 #3d #3dgame #platformer #gamedev #PlatformerGame #gimp #gimp3 #blender #blender3d #codeberg #opensource #game #games #3dplatformer #assimp #bullet3 #miniaudio #devlog

  39. Hi folks! ✌️

    Here's a little update of my game about Dima who doesn't just stand now, but also can jumps and walks 🏃‍♂️

    👉 fediverse.tv/w/vuGvDwkhYvLgSWP

    In this update I've remove that "dumb" background, and change it on a normal one.

    And also I've fix the hairs of Dima 💇‍♂️

    #opengl #cpp #cplusplus #cmake #codelite #glfw #glfw3 #opengl3 #3d #3dgame #platformer #gamedev #PlatformerGame #gimp #gimp3 #blender #blender3d #codeberg #opensource #game #games #3dplatformer #assimp #bullet3 #miniaudio #devlog

  40. Hello everyone again! 👋✌️

    Here's an update of Dima who now can don't just stands, but also walks 🏃‍♂️‍➡️ and jumps!

    fediverse.tv/w/3qhzVPf4Cw4fxkY

    The link to download it you can find in the video description, as always 😉

    Stays awesomes, and I wish ya a good day! 🙂

    #opengl #opengl3 #cmake #cmake3 #codelite #glfw #glfw3 #3d #3dgame #blender #blender3d #game #games #gamedev #platformer #PlatformerGame #codeberg #opensource #assimp #bullet3 #3dplatformer #cpp #cplusplus #gimp #gimp3 #linux

  41. Hello everyone again! 👋✌️

    Here's an update of Dima who now can don't just stands, but also walks 🏃‍♂️‍➡️ and jumps!

    fediverse.tv/w/3qhzVPf4Cw4fxkY

    The link to download it you can find in the video description, as always 😉

    Stays awesomes, and I wish ya a good day! 🙂

    #opengl #opengl3 #cmake #cmake3 #codelite #glfw #glfw3 #3d #3dgame #blender #blender3d #game #games #gamedev #platformer #PlatformerGame #codeberg #opensource #assimp #bullet3 #3dplatformer #cpp #cplusplus #gimp #gimp3 #linux

  42. PVS-Studio в CMake: теперь официально

    Если у вас кроссплатформенный проект на C или C++, то, как правило, вы не завязываетесь на одну систему сборки, а используете генератор сценариев для сборочных систем. Самый распространённый из них, CMake, недавно получил официальную интеграцию со статическим анализатором PVS-Studio для этих языков. Как это работает?

    habr.com/ru/companies/pvs-stud

    #cmake #cmake_4 #pvsstudio #cmake_430 #статический_анализ

  43. Hi folks! ✌️

    Here's the new version of the game about our feathery friend 🐦👉 fediverse.tv/w/9oPmEH866vmVfGp

    The link to download the game in the video description 🙂, because... I doubt that if I will put here two links, the video will shows you here (on Mastodon) from PeerTube 😅

    Have a good, and productive day for you 🙂

    #game #games #opensource #2d #2dgame #cmake #cmake3 #tiled #TiledMapEditor #inkscape #sdl #sdl2 #box2d #cpp #cplusplus #linux #codelite #appimage #gamedev #releases #action

  44. Hi folks! ✌️

    Here's the new version of the game about our feathery friend 🐦👉 fediverse.tv/w/9oPmEH866vmVfGp

    The link to download the game in the video description 🙂, because... I doubt that if I will put here two links, the video will shows you here (on Mastodon) from PeerTube 😅

    Have a good, and productive day for you 🙂

    #game #games #opensource #2d #2dgame #cmake #cmake3 #tiled #TiledMapEditor #inkscape #sdl #sdl2 #box2d #cpp #cplusplus #linux #codelite #appimage #gamedev #releases #action