#cmake — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #cmake, aggregated by home.social.
-
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.
-
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.
-
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: https://www.kdab.com/%C2%B5-boosting-your-cmake-productivity-with-environment-variables/
-
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: https://www.kdab.com/%C2%B5-boosting-your-cmake-productivity-with-environment-variables/
-
C++-техрадар: что разработчики действительно готовы брать в работу
В мае на конференциях C++ Russia и HolyJS мы предложили участникам оценить технологии, инструменты и инженерные практики, с которыми они работают или за которыми следят. Так появились данные для двух технических радаров: по экосистеме C++ и по JavaScript. Сырые цифры сами по себе рассказывают немного, поэтому мы отдали результаты на разбор эксперту. Виктор Новиков, руководитель группы разработки в «Лаборатории Касперского», посмотрел на распределения голосов и поделился своим мнением, почему CMake уверенно побеждает, а PostgreSQL раскалывает аудиторию пополам. В этой статье — его анализ C++-части исследования. Про техрадар JavaScript мы расскажем в другой статье. Посмотреть радар и принять участие в голосовании можно на странице проекта .
https://habr.com/ru/companies/kaspersky/articles/1067982/
#с++ #postgresql #cmake #bazel #git #tech_radar #bash #gdb #vs_code #clang
-
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: https://leanpub.com/courses/leanpub/modern_cpp23_config_lib
-
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: https://leanpub.com/courses/leanpub/modern_cpp23_config_lib
-
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: https://leanpub.com/nomorehelloworlds
#C_and_cpp #Cmake #Software_architecture #Automated_software_testing
-
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: https://leanpub.com/nomorehelloworlds
#C_and_cpp #Cmake #Software_architecture #Automated_software_testing
-
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
-
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
-
Делаем модуль на 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 должен оставаться «тонким».
https://habr.com/ru/articles/1064564/
#React_Native #C++ #TurboModules #JSI #TypeScript #Codegen #Android_NDK #CMake #Xcode
-
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
https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
-
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
https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
-
Как поднять userver без Docker на Ubuntu
Docker для userver удобен, но не обязателен. Как поставить зависимости через apt, собрать сервис нативно на Ubuntu и не утонуть в первой компиляции.
https://habr.com/ru/articles/1064074/
#userver #C++ #CMake #Ubuntu #без_Docker #native #Ninja #backend #open_source
-
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: https://leanpub.com/courses/leanpub/modern_cpp23_config_lib
-
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: https://leanpub.com/courses/leanpub/modern_cpp23_config_lib
-
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!!
-
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!!
-
Hi folks! 👋✌️
Here's an update of "Dima wants crisps 🍟"! 🙂🎬👉 https://fediverse.tv/w/iaVL7qp89sp8jMeh47hW3k
You can download the new version from here 🏔️👉 https://codeberg.org/xolatgames/Dima-wants-crisps/releases/tag/v0.9.0
Or through my website 🙂👉 https://xolat.games/search-by-tags/glfw.html
Have a good day! 😉
#cpp #cplusplus #opengl #gamedev #games #game #prototype #opensource #codeberg #singleplayer #3d #3dgame #3dgames #blender #blender3d #noai #glfw #glfw3 #cmake #cmake3 #codelite #opengl3 #glsl #devlog #devlogs #development
-
Hi folks! 👋✌️
Here's an update of "Dima wants crisps 🍟"! 🙂🎬👉 https://fediverse.tv/w/iaVL7qp89sp8jMeh47hW3k
You can download the new version from here 🏔️👉 https://codeberg.org/xolatgames/Dima-wants-crisps/releases/tag/v0.9.0
Or through my website 🙂👉 https://xolat.games/search-by-tags/glfw.html
Have a good day! 😉
#cpp #cplusplus #opengl #gamedev #games #game #prototype #opensource #codeberg #singleplayer #3d #3dgame #3dgames #blender #blender3d #noai #glfw #glfw3 #cmake #cmake3 #codelite #opengl3 #glsl #devlog #devlogs #development
-
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: https://leanpub.com/courses/leanpub/modern_cpp23_config_lib
-
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: https://leanpub.com/courses/leanpub/modern_cpp23_config_lib
-
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 👉 https://codeberg.org/xolatgames/BYSU/releases/tag/v1.1.1
Or view its source code here 🏔️👉 https://codeberg.org/xolatgames/BYSU
#cpp #cplusplus #sdl #sdl3 #backup #backups #app #apps #soft #software #opensource #imgui #dearimgui #sqlite #sqlite3 #cmake #codelite #codeberg
-
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?
-
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?
-
Greetings everyone! ✌️
Here's another one update of "Dima wants crisps 🍟".
I have add spruces! 🌲🌲🌲😁 (if it say shortly)
https://fediverse.tv/w/9J23vAxE34VXS5vVyqVca9 🎬
You can download the new version from Codeberg 🏔️👉 https://codeberg.org/xolatgames/Dima-wants-crisps/releases/tag/v0.8.0
Or you can also download this game from my website, as always 👉 https://xolat.games/search-by-tags/glfw.html
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
-
«У меня работает»: десять способов узнать, что нет
Я думал, проект готов к релизу. CI думал иначе — и оказался прав десять раз. История про то, что видно только на чистом раннере. «Полностью готовый» и локально зелёный проект — а первый же полный прогон CI вскрыл десяток скрытых проблем: версия CMake на Ubuntu 22.04, строгий GCC 11, артефакты с 403 от CDN, ASan под valgrind, недоступный из сети реестр и другие. Показываю каждую проблему с настоящим сообщением об ошибке и решением, а заодно — как поднял свой раннер, выпустил релиз руками без раннеров и ускорил пайплайн с 53 до 15 минут. Мораль: CI ловит ровно то, что невидимо на машине разработчика, — версии инструментов, окружение и сеть.
https://habr.com/ru/articles/1044402/
#gitlab #gitlabrunner #gitlabci #cmake #docker #тестирование
-
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 👉 https://codeberg.org/xolatgames/Dima-wants-crisps
#game #games #3d #3dgame #blender #opengl #glfw #cmake #cpp #cplusplus #opensource #gamedev #platformer #blender3d #codeberg #gimp #gimp3 #assimp #bullet3 #3dplatformer
-
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 👉 https://codeberg.org/xolatgames/Dima-wants-crisps
#game #games #3d #3dgame #blender #opengl #glfw #cmake #cpp #cplusplus #opensource #gamedev #platformer #blender3d #codeberg #gimp #gimp3 #assimp #bullet3 #3dplatformer
-
Hi folks! ✌️
Here's a build of BYSU 🙂👉 https://codeberg.org/xolatgames/BYSU/releases/tag/1.0.0
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
-
-
-
Irregular reminder about #pythonbuilder, a build system in Python.
https://codeberg.org/harald/pythonbuilder
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: https://codeberg.org/harald/pythonbuilder#some-theory-or-why
Detailed docs: https://docs.miamao.de/@main/pythonbuilder/
#pythonbuilder #build #buildSystem #gradle #maven #cmake #npm
-
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 😄.
-
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 😄.
-
Hi folks! ✌️
Here's a little app that I've made for this one day.
👉 https://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
-
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
-
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
-
Hi folks! ✌️
Here's a little update of my game about Dima who doesn't just stand now, but also can jumps and walks 🏃♂️
👉 https://fediverse.tv/w/vuGvDwkhYvLgSWP4HUHgzy
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
-
Hi folks! ✌️
Here's a little update of my game about Dima who doesn't just stand now, but also can jumps and walks 🏃♂️
👉 https://fediverse.tv/w/vuGvDwkhYvLgSWP4HUHgzy
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
-
Hello everyone again! 👋✌️
Here's an update of Dima who now can don't just stands, but also walks 🏃♂️➡️ and jumps!
https://fediverse.tv/w/3qhzVPf4Cw4fxkYDVM4CRS
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
-
Hello everyone again! 👋✌️
Here's an update of Dima who now can don't just stands, but also walks 🏃♂️➡️ and jumps!
https://fediverse.tv/w/3qhzVPf4Cw4fxkYDVM4CRS
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
-
PVS-Studio в CMake: теперь официально
Если у вас кроссплатформенный проект на C или C++, то, как правило, вы не завязываетесь на одну систему сборки, а используете генератор сценариев для сборочных систем. Самый распространённый из них, CMake, недавно получил официальную интеграцию со статическим анализатором PVS-Studio для этих языков. Как это работает?
-
Hi folks! ✌️
Here's the new version of the game about our feathery friend 🐦👉 https://fediverse.tv/w/9oPmEH866vmVfGpEqzt25D
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
-
Hi folks! ✌️
Here's the new version of the game about our feathery friend 🐦👉 https://fediverse.tv/w/9oPmEH866vmVfGpEqzt25D
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