Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "cmake"
--- NVIDIA announces PhysX SDK 4.0, open-sources 3.4 under modified BSD license ---
NVIDIA has announced a new version, 4.0, of PhysX, their physics simulation engine.
Its new features include:
- A "Temporal Gauss-Seidel Solver (TGS)", an algorithm used in this SDK to make things such as robots, character arms, etc. more robust to move around. NVIDIA demonstrates this in the video by making their old version of PhysX, 3.4, seem like an unpredictable mess, the robot demonstrating that version smashing a game of chess.
- New filtering rules for supposedly easier scalability in scenes containing lots of both moving and static objects.
- Faster queries in scenes with actors that have a lot of shapes attached to them, improving performance.
- PhysX can now be more easily used with Cmake-based projects.
In essence, better control over scenes and actors as well as performance improvements are what's new.
Furthermore, NVIDIA has released PhysX version 3.4 under the 3-Clause-BSD-license, except for game console platforms.
As NVIDIA will release the new version on December 20th, it will also be released under the same modified BSD license as PhysX 3.4 is now.
What are your thoughts on NVIDIA making a big move towards the open-source community by releasing PhysX under the BSD license? Feel free to let us know in the comments!
Some days ago I finished "Ray tracing in a weekend" (Peter Shirley) and I'm learning a lot :D
In the new year I will start with "Ray tracing the next week", but there are still some things I want to tackle before that (improve code quality, optimize... it's my first project that is bigger than a codeforces problem solution, a part from the projects at work).
Any sources of wisdom and recommendations are welcome!!9
I'm working on a programming language with a "bytecode" interpreter and a compiler that translates source code to said bytecode and... it sort of actually works!
I want to recreate an Erlang-style environment, currently you can write functions, call C++ functions via wrappers, have immutable-only values, and it has no explicit control structure apart from statement sequencing and the if-expression because I want to make it as functional as possible. Next thing on the list is to add a green threads implementation and ability to spawn and send messages to processes.
Still a WIP and heck even design-in-progress.
Now for the rant:
I'm using CMake for building C++ (interpreter) and Stack for Haskell (compiler) and I've been trying to get them to talk to each other for hours because I want CMake to manage the Stack build too and shove all the executables into one place. CMake documentation is weird and Stack isn't too helpful either, so I guess I'll just spend another few hours trying to get Stack to fuckin reveal its build directory to CMake and/or build to a given directory. Ugh.8
Why is starting a C++ project so overly complicated and annoying?!
So many different compilers. So many ways to organize the files. So many inconsistencies between Linux and Windows. So many outdated/lacking tutorials. So many small problems.
Why is there almost no good C++ IDEs? Why is Visual Studio so bizarre? Why are the CMake official tutorials literally wrong? Why can't we have a standard way to share binaries? Why can't we have a standard way to structure project folders? Why is the linker so annoying to use?
Don't get me wrong, I quite like the language and I love how fast it is (one of the main reasons I decided to use it for my project, which is a game almost comparable to Factorio)... But why is simply starting to write code such a hassle?
I've been programming in Java for years and oh god I miss it so much. JARs are amazing. Packages are amazing. The JDK is amazing. Everything is standardized, even variable names.
I'm so tempted to make this game in Java...
But I can't. I would have a garbage collector in the way of its performance...12
This bonehead wants to delete your C++ code. He obviously means that to use this for out-of-source builds, but still pretty dumb and easy to mess up.2
In 15+ years of full time work as a C++ software engineer there is one tool that I always hated: CMAKE. What a fucking pile of shit, seriously, every time there is project that uses it I simply cannot build said project with one click. In all these 15 years working in different companies the only reason people speak about cmake is to avoid adding source files to multiple projects (VS, XCode, Android).
I'm not some kind of newbie: I've make cmake projects myself, I've build hundrends of projects that use cmake and I even contributed fixes to their code. I still believe that cmake is garbage that should stop to exist.9
I can't take a (C++) project seriously if it is using Visual Studio's build system instead of autotools, CMake or even just a Makefile.8
A week after updating to Mac OS Big Sur and up til now it has fucked up:
- the entire JDK
- every IDE installed previously
- all LLVM stuff
- python installation
- OpenCV (HOW????)
- Haskell and cabal
- bunch of UI libraries
What amazes me the most is that it manages to fuck each of them up in a different way. No overlap at all, and I had to manually fix every single one of them -.-
And please no "dOn'T BuY mAc" comments, it's a workplace requirement; I literally don't have a choice.9
WHAT THE FUCK?
CMAKE you pathetic collection of loosely bundled scripts written in a shitty macro language!
WHY? WHY? WHY?
WHY DO YOU REFUSE TO OUT OF SOURCE BUILD?
IT WORKED FINE LIKE 2 SECONDS AGO! I HATE YOU WITH THE FIRE OF A THOUSAND STARS!2
Translating win32 calls to whatever the hell there is in Unix and Unix-like OSes (well, most of them) in order to port a certain game net code library and dear god why did I volunteer myself for this task
At least pevents is there to help, but too bad cmake doesn’t want to compile it with the flag I need (“-DWFMO”) in order to make the “WaitForMultipleEvents” method to work at all. Instead no matter what options I give it on the command line or how I tell VS Code to do it, it seems to give me the finger to my fucking face.
Doing it for games on the cooler OSes... doing it for the community... come on...2
New team, same discussions...
* Why should we use cmake? It is way better to add visual studio project files to the repository and allow everyone to mess around in the compiler setting dialogs. Nobody needs cmake if not targeting multiple platforms!
* clang-format? What kind of black magic is this? It is way better to manually try to stick with each source file's existing formatting - regardless of how messed up it is - and manually check that from time to time!
* Why should we use the latest visual studio 2019 compiler, if 2017 and 2015 do just fine? This way we can save license fees!
Just to mention a few highlights...13
C++ development will be my end.
The absolutely unreadable errors, the overly convoluted macros set up in the project, the cmake build system.... The absolutely unnecessary separation into cpp and header files...
Mhhh. CMake scripting. Always fun. I can barely describe how enfuriating it is dealing with this. Literally shaking.4
I encountered every possible bug setting an Ubuntu VM environment to test my engine. I manually created all the eclipse projects and it's now available on the repo - it compiles and runs.
Suggestions for a good CMake guide?4
Well, I really have nothing to rant about these days 😅
What I do have is a request for feedback on a project’s video, m working on the project and will release it open source once it works decently well, and most of all, when the code doesn’t look so atrociously bad 😅😅
It is basically a C/C++ package and project manager.
It can create, build, and run projects which u make, and add library flags and include directories automatically if that library exists in its package list.
It also contains package (=library) manager which can, as of now, install, uninstall, and fetch info of any package should it exist in the package list.
I will be adding package upgrading in the future, although package list updates can be performed.
Also, right now it can only build binary projects. I’ll soon be working to enable creation of library ( static/dynamic ) projects as well.
Finally, it allows for building of packages using CMake or configure, but uses a custom format to build projects.
Here is a video of building a project and installing libcurl on system:
Thanks a lot ☺️😊1
I sometimes feel like people who make/made compilers for C were incredibly intelligent, but also were aliens without any understaing of the average brain capacity of an average human5
Trying to start doing stuff with C but CMake is very confusing and I can't find anything solid (and easy to read) about setting it up and including depends and what not. We are totally spoiled in Java with tools such as Gradle or Maven.3
I wanted to install this new software in our cluster but it didn't have Cmake on it, so I scp Cmake source files and then I started looking for a CMakeLists.txt file for compile it when I suddenly realized what I wanted to accomplish in the first place 😅1
So let's say you spent over a day trying to clone WebKit using git but it failed every single time. Because the WebKit repo is HUGE (at least 7GB of worthless bloated refs), your connection is unstable, and git doesn't resume.
Then you discover you can solve the issue by simply cloning it via SVN in your cmake script.
Then you hit build, and forget that you had `-j 8` set in your IDE settings.
Then your computer freezes when it tries to compile 8 of WebKit's "UnifiedSourceXXX.cpp" files at a time, and all your 16GB of RAM get obliterated.
What the fuck, universe?1
I just can't get my head around it. How could a "language" like cmake become so widely used and popular? Let alone be the horrible syntax or the documentation which is an insult to anyone who is trying to read it.
I mean seriously??: " function_xyz( PARAM1 PARAM2 PARAM3) : for this use case A pass the keyword A and the words X Y Z, for use case B pass the keyword B and the words A B C you can also add the keyword D simply to increase the number of possible behaviours this stupid function can have."
But yeah i get it, it's free its cross platform and so on.
But how can after version 10000000.1, after adding dozens of "macros or functions" the most simplest and straight forward use case without any fucking thirdparties be so fucking difficult to implement.
And why are there for any use case 50 different ways of doing it? instead of one simple way?
Really, I just don't get it.4
Fuck. I just want to fucking use OpenCV on CLion on Windows. Why the fuck do I need twenty fucking PhD's in quantum rocket science to set up a simple project with Cmake?
During the time I just wasted trying to get the correct library to link properly, I could have rewritten all of Tesla's fucking CV functionality from scratch, but instead here I am spending literal fucking hours googling why the fuck does 'recursive_mutex' not name a fucking type in namespace 'std' on mingw.
Fuck C++ I'm going back to C# where I can literally install OpenCV and all of its fucking dependencies from nuget with ***ONE*** fucking click.6
I'm working in a complex CMake/C++14 project.
Many libraries uses EASTL as STL replacement, works and compiles flawlessly.
Have to use Qt5 for an application which uses the libraries.
The EASTL Library fucking collapses
Compile fails, 1k of syntax errors somehow.
After hours trying to figure out without alterating the EASTL library (i don't want to maintain custom versions of 3rd party libraries, an complete burden to maintaining updated)
Remove all reference of Qt5 from the code and the build system.
It fucking compiles.
Isolate an minimal build which only uses CMake, EASTL and Hello World in Qt5.
1k of syntax errors again.
Spend hours trying to fix it, no avail, still fucking 1k syntax errors.
I'm past beyond of the project development where ALL the big libraries of the project uses EASTL extensively.
One day C++ will drive me into the depths of madness.2
"Configuring incomplete, errors occurred!" Ok, I get that. But would it kill you to tell me what errors? If you behave like an asshole, I'll hate you as well!
The easiest way to fuck yourself and ruthlessly waste your night away,
Using Boost sources, CMake and Visual Studio together.2
Classmate got me today to write cmake.
I mean after the 2 years of editing it in android repos to fix shit i hated it.
But i must say its pretty good tool.
Also i may have written it in VIM.
Dont worry NANO team. I wont leave you. Im still proud user of NANO.4
Gotta love it when CMake manages to change the way it handles GLEW in the latest build and breaks the QT moc inclusion directive in the previous. I absolutely detest the current state of cross platform build tools and environments. The amount of ffing time wasted on this crap is just beyond me.2
Dear Kubuntu 20.04
You're not a programming language but I felt that you fit here in this wkRant so people can see how shitty you became.
It's about 6:27am CET, and you wasted my night, you used to be as simple as sudo apt-get install, now you're mostly PPA first or worse, make. You killed make now we use cmake. We are now looking for debs, which is a pain since you end up in an index site without download here. And the debs now don't work. Missing dependencies. You killed core libraries saying they are now incompatible or obsolete.
All I want is my god damn cli visualiser and osdlyrics back!!9
I have been writing c++ for a long time and I have gotten away with using my own buildscripts and nothing more.
Just started using cmake for a library. What the absolute fuck is this. I have never felt this out of depth in a long time.
I'm always wondering what was there in people minds when Cmake build system was invented.. I mean, I know drugs were super strong in the '80s, but this is ridiculous..20
Writing cross compilation build scripts make me feel like I'm constructing a log cabin from scratch, on the moon, without a suit, and no trees.
CMake toolchains are a joke. I've thrown them out entirely at this point and am writing custom detection logic for the different cross compilation combinations.
On that note, Microsoft's layout for their development kit is an absolute NIGHTMARE. Get your shit together, Microsoft.
Going to be a VERY long day.3
Note to self: Next time remember to clean build when CMake is throwing an error, before you start whining to the library support team.2
Detecting platform in cmake (which I hate).
WHY do you display "armv71", yet can't match the string "armv71"???!?
I'll need to post my cmake lists and cli results on stackoverflow.
OK, last try, I'll copy and paste from the terminal into my file.
Ooooh! You weren't saying "armv71"! You were saying "armv7l"! 😥
(And my font does make a difference between l and 1)1
Let me start this off by stating I'm a Java dev, and a noob with C++.
Thought it'd be cool to learn some OpenCL, since I want to do some maths stuff and why not learn something new.
So I sat down, installed Nvidia proprietary drivers, broke my x-org server, purged, reinstalled, rebooted and after a while I got stuff sorted out.
Then on to my IDE. I use CLion and it uses Cmake. C++ noob knows shit about Cmake, so struggle for two hours trying to figure out wtf is going on with the OpenCL libs and why they're only partially detected. Fml.
Finally, everything is configured and I'm set. I start working on a Hello World program using OpenCL. Finish it in 20 mins, all good. No output. Do some googling, check my program a million times. Nothing wrong here. Check the kernel, everything as in the tutorial.
I start checking error codes after a while reported by OpenCL (which I had no clue was a thing) and I get some code saying the program was not created properly (to run the kernel). No fucking clue what's up with that. Google around, find another tutorial, rewrite my code in case I'm using outdated code or something. Nothing.
Fast forward an hour, I find out that OpenCL has logs! So I grab some code from the website I found it on, and voila, I finally get some info on what's going on.
Get a load of this bs.
In the kernel file, so that OpenCL knows that it's a function to run, you have to put __kernel. But in all the places I read, it said to put it as _kernel.
Add the underscore, compile, run and everything is perfect.
Then I tried just putting 'kernel'. Also compiles and runs fine.
Two hours hours and my program was fixed by adding an underscore. IF ONLY C++ GAVE AN INDICATION OF WHAT BLEW UP INSTEAD OF SITTING BACK AND BEING LIKE "oh wow man feels bad, work some magic and try again" THEN THIS WOULD NOT HAVE TAKEN SO LONG.
Then again, it was OpenCL that was being shitty with its styling enforcement or whatever the hell the underscore business is. But screw it. C++ eats shit too for this. Sure, maybe Java babies you by giving you the exact error and position that the error took place at. But at least that way you don't waste hours of your life chasing invisible bugs 😠😠
I'm going to eat some food... Too much energy was consumed fighting the system... Then I'll get back to OpenCL because 😇 but that doesn't make it less bs.1
CUDA is a fucking bitch when it comes to configure projects
Creating my first CUDA project it yelled at me it doesn't support my current gcc version, ended up with me yelling back "OY SHUTUP" and slapping some flag for it to use clang instead — basically what it advised but I didn't listen first. Fine now.
Working on this project on another fresh environment, and now it doesn't detect anything and dumbly tries to reload my CMake project with the LATEST installed gcc when I already told it to use version 8 TWICE. First by setting up a toolchain with compilers pointing to this specific version and second by passing the -DMAKE_C_COMPILER pointing to it again. Still this stubborn piece of shit tries with latest everytime.
The most applauded solution was to use update-alternatives to make gcc point to the version I want CUDA to use. Thank you genius, but what if I don't want to use a deprecated gcc version with normal Cxx projects ?
And cherry on the top of this bullshit, I'm fixing this dumb configuration issue (can't stress enough how much I hate this shit) to be able to fix an EVEN MORE annoying issue with CUDA being a bitch AGAIN and not letting me use std functions where I'm allowed to
Fuck CUDA. Fuck CMake. Fuck C. Fuck everything3
WHY is cmake such a total shitstain?
Nothing about it works. literally nothing. I can't even make it run a script and do probably the single most fundamental notion of what it means to run a script, which is display its fucking output.12
So I did some testing with WebAssembly to see how it works in the most recent version and without Emscripten. I installed CMake and Visual Studio Community 2015 and compiled Binaryen, LLVM and Clang for a few hours (had to do it multiple times because I used the wrong version and forgot a compile flag), ended up with over 10 GB less free space on my laptop.
All that to compile a < 1kb C file to < 1kb WASM code.
At least it works for now and can natively run in (some) browsers.2
For fucks sake Windows. Why can't you just fucking have a sane terminal without fucking with everything.
Installing and using MinGW and CMake is enough of a pain when in a slow VM.
Does curses even work with color in Windows!? The best I've gotten is a shade of grey, and white, and I can't even get the grey back!
Why CMake is a steaming pile of dogshit
- Doesn't echo the command lines it is running making it hard to figure out what it is doing
- Dumps a bunch of crap all ovey my directory structure. And I thought NPM was bad
- Generates 'Makefiles' but only kinda uses Make? (I think, its confusing) WTF
At this rate I wish I could use just bash scripts. At least I could figure out why a simple thing like why my compilation fails to locate an include file even though Is is clearly specified in include_dirs() directive.
Get phucked, Cmake9
Today, I decided to learn build a c++ project using cmake. Since I've never done a big project in C++ I have no experience with these stuff.
Couple of hours for researching and trying to understand how that thing works, how to specify things, this and that. Wrote a small program for testing.
Everything was fine. Makefile was generated and program was worked.
Then.... Somehow, sublime text started to give me error messages like, 'the header file you included is not found.' I hit the makefile again, the built was successfull... I know that, need to add -I to compiler flag so that it can find the files. But in sublime text constantly refuses my 'possible' solutions.
Even ycm in vim does this. They expected me to write includes like '../thispkcg/include/header.h'
Where did i go wrong ..............
Btw it works like a charm in cLion I don't know why..2
I would appreciate if the language server wouldn't crash constantly, it's getting rather annoying.
Why is it that most C(++) tooling I have used feels like a half assed barely working project?3
Statically linking to qt5 is quickly driving me fucking insane.
I've a list of unresolved dependencies during linking longer than a really long fucking list. Ugh.
Cmake, why can't you save me?
Think I'll just go back to dynamic and build on each needed system.1
Just wasted a day trying get Robot Operating System working.
Absolute rubbish software. Broken Gentoo Repos, Required packages that don't exist, failing to install cmake files to find the crap it installed, etc.
I already have every library this trash provides but I'm forced to go through it since a newb PHD wrote an image segmentation algorithm which should work just find with OpenCV/PointCloud/Cmake but NO he had to go put it in ROS and ruin my day.1
I'm all for diversity in Linux, I like that there's multiple organizations, flavors, etc., but geez, troubleshooting a huge CMake project that breaks on Fedora and not on Ubuntu because of the way Python2.7 is installed is a real pain. :(
If you're creating an AUR pakage
Why the fuck are you not referencing every dependency?
And it isn't even some obscure library or anything. It's fucking CMake.3
CMake with CLion on Windows is driving me crazy, I can't make it work even if I follow the guides :/
There is some better automation tools(for mouse/GUIs users) where I can setup my dependencies in a more straightforward way rather than learning/trying-to-understand this scripts?
Another hours wasted on debugging, on what I hate most about programming: strings!
Don't get me started on C-strings, this abomination from hell. Inefficient, error prone. Memory corruption through off by one errors, BSOD by out of bound access, seen it all. No, it's strings in general. Just untyped junk of data, undocumented formats. Everything has to be parsed back and forth. And this is not limited to our stupid stupid code base, as I read about the security issues of using innerHTML or having to fight CMake again.
So back to the issue this rant is about. CMake like other scripting languages as bash have their peculiarities when dealing with the enemy (i.e. strings), e.g. all the escaping. The thing I fought against was getting CMake's fixup_bundle work on macOS. It was a bit pesky to debug. But in the end it turned out that my file path had one "//" instead of an "/" and the path comparison just did a string comparison without path normalization.
Stop giving us enough string to hang ourselves!12
So a while ago I was complaining that tonnes of tutorials ignore CLI or alternative build methods like cmake or meson.
Was having trouble getting glew to link statically... Well only months fucking later do I realise that all I needed to do was add -DGLEW_STATIC to my fucking compiler arguments...
Why is past me such a fucking idiot!
Any good "CMake for newbies/dummies" guide that doesn't require 2 hours of readikg or watching to be able to create a VS solution using CMake for a simple project??2
So when installing an rpm there is a file collision check. When you add a file to an rpm package with cmake / cpack it unfortunately adds parent directories your file goes into, which will give you conflicts with other packages. But well you have that beautiful feature to exclude directories from being added:
Now somehow it failed. Turned out it would not work if my path ended with a backslash. Brush my banana! Like "/etc/sysctl.d" is a different animal than "/etc/systclt.d/". - But at least that's nothing against the strangeness of the "mv" command in those respects.
What is the meson build system and why did you need to break your cmake files in order to support it -_-