Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
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.9
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
CMake. Because as always, it's even worse that it looks.
1. There is a nearly-undocumented variable for determining the permissions for implicitly created directories in the install path.
2. This variable is used for install(TARGET), install(FILES), but not for install(DIRECTORY). Why? Because fuck me I have no idea.
I can't even imagine how they could have implemented this functionality and yet have this behaviour. Unless it was written by Koppipasta the drunken lemur intern.
Don't accept merge requests from drunken lemurs. Just say no.4
Mhhh. CMake scripting. Always fun. I can barely describe how enfuriating it is dealing with this. Literally shaking.6
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 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
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
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
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
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 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
The easiest way to fuck yourself and ruthlessly waste your night away,
Using Boost sources, CMake and Visual Studio together.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!
If I have to deal with one more package dependency today that doesn't have any support for configuring with an exec_prefix, I will likely do something that somebody else will regret.
CMake. There is apparently no way at all of including some FindXXX.cmake modules on the search path via an environment variable. Jesus fucking Christ you fucking shitful excuses for engineers. And go shove your fucking semicolon laden randomly quoted path strings.4
CMake. Two different ways to find package. Same command. Different search paths.
CMake. Install an export? Generate 17 different CMake scripts. Which can't be found unless they are put in the right path, *which is system fucking dependent*.
CMake. Export was installed? The import library is not global, so it cannot be aliased. WTF? WTAFF?!
CMake. Package not found. Okay add it as an external project. But you can't now find it again unless you refucking run fucking CMake again.
CMake. Debugging an external project problem? Well, just wipe the build and start again, because ~~ Mysterious State ~~. Even if that means rebuilding everything else.
CMake. Where even the documentation for "if" makes no sense.
Who are these deranged monkeys? Who gave them jobs? Why do people use their flung poop of a build system?3
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
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.13
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
Literally the only thing I use regularly that makes me want to
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
Colleague asked a question about CMake, for which the correct answer is ExternalProject_Add.
There will be tears before bedtime.4
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
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.
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
CMake. include(<FOO>) has different behaviour if <FOO> is a 'file' or a 'module'. There is no option to include that says if something is a file or a module.
How does CMake know if <FOO> is a file or a module? What even is a module anyhow? Who knows? The documentation doesn't!
Best: The Ada 83 Language Reference Manual.
Ada was picked as the teaching language for a while when I was an undergraduate. All the supplied information about the language was at best vague, at worst wildly misleading. But then I came across the LRM in the library, and it had all the answers. All Of Them.
Close runner up: The Annotated C++ Reference Manual.
Back before C++ became too large for any one mortal mind, this reference both contained the 'ground truth' standard _and explanations of what lead to the choices made in that standard_. Just an excellent reference.
Worst: CMake documentation.
The man page was unnavigable, until they tossed it and you had to use the webpage or the idiosyncratically organized help output from the program.
CMake is stupidly complicated already, with bizarre parsing, thousands of odd special case behaviours, and weird interactions between various features and tools. Good documentation might have made that manageable, but no: answering any question requires a measure of clairvoyance, which will inform you that the thing that you need is in fact described off hand halfway down the 4 pages of rambling text in a completely different part of the docs. And then they changed it 2 versions ago.2
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!15
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
TIL that CMake `export()` will write data to a 'user package repository' that sits somewhere in a home directory or registry (!). And _now_ they've made this do nothing by default, because *surprise* this is an incredibly stupid idea.
But it depends on the declared version in the CMakeLists.txt. So some random CMake package can do it anyhow. And it's controlled by a CMake variable regardless, so packages can dick about with hidden CMake global fucking state anyway.
CMake: when wiping the build directory just isn't enough.1
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!
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
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
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?
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: INSTALL creates a directory? Use umask. INSTALL copies a file? Ignore umask.
WTF you muppets?!
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.