CMake

(12)
4.4 out of 5 stars

CMake is a family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.

Work for CMake?

Learning about CMake?

We can help you find the solution that fits you best.

Find the Right Product

Compare CMake to Similar Solutions

CMake Reviews

Ask CMake a Question
Write a Review
Filter Reviews
Filter Reviews
  • Ratings
  • Company Size
  • User Role
  • User Industry
Ratings
Company Size
User Role
User Industry
Showing 12 CMake reviews
LinkedIn Connections
CMake review by <span>Trevor H.</span>
Trevor H.
Validated Reviewer
Invitation from G2 Crowd
Reviewed On

the non-elegant standard for cross-platform builds

What do you like best?

You thought writing software was hard? Try getting it to build and run on all kinds of different devices and operating systems. This is where CMake shines. It's currently the best build system out there for cross-platform development. Getting software to work on Windows, Mac, and the various flavors of linux is still no easy task, but CMake is the answer from the build perspective.

It also has a big community and tooling support has been growing rapidly.

You'll be able to find some kind of IDE support guaranteed. Visual Studio / Jet Brains.

The support was added recently, but you should be able to use it in production.

What do you dislike?

Terrible syntax, and very slow start up times. Let me begin with the start-up times. We actually had to move away from CMake because our code base got so large that the initial parsing and book-keeping of CMake was taking way too long. We'd wait 5 minutes just to have CMake tell us that everything was already built. Maybe there were work-arounds for this, but overall we decided to switch to the big hitters (buck, blaze, bazel, ninja).

The syntax is bad but most people just shrug and say, "hey as long as I can get my software built".

The thing is though, that eventually you'll want to mix languages, mix compilers, do debugs, releases, doc generation, special test artifacts, and the syntax of Cmake becomes a hindrance. Other languages let you build rules in a python/groovy like syntax, and this is key. The language of a build system is more important than people first realize, and kludging together your build with a hacky macro language becomes a deal breaker.

Recommendations to others considering the product

If you're working in a small project (say less than 5,000 files), CMake is a good choice.

Regardless of what operating system you're developing on, and regardless of your targets, CMake is a good choice. It has a great community. If you have issues, there are plenty of people to help answer questions. If you are only on linux, mixing languages, and your codebase is very large, take a look at some of the build systems that have come out of Facebook / Google instead.

What business problems are you solving with the product? What benefits have you realized?

Again, CMake solves the problem of cross-compilation through consistency of single build files.

Its pretty simple to take a working CMake example and roll with it. The barrier of entry to using CMake is low, but the difficulty increases as you attempt to do unique and novel things within your software build. Yet, I'd still say that CMake is much easier than writing raw Makefiles. CMake provides a hint of confidence to users in the open source community as well. I'm much more willing to contribute to a project if I see Cmake, as apposed to raw makefiles (or no build files at all).

Sign in to G2 Crowd to see what your connections have to say about CMake
Headshots
CMake review by <span>Subhendu M.</span>
Subhendu M.
Validated Reviewer
Verified Current User
Invitation from G2 Crowd
Reviewed On

The gold standard build tool for most projects

What do you like best?

CMake ties every build tool together with a glue, be it for make for linux or mingw-make/vs for windows. No more dependency errors, Has in-built os specific macros to search for libraries needed to compile. Has a nice gui for those who need it. Spits out errors in a graceful manner. Can specify which version of a lib to use, minimum cmake version supported etc..

What do you dislike?

Frankly, there isn't much to dislike about cmake. CmakeLists.txt can be streamlined a bit, easier command line switches, that is all.

Recommendations to others considering the product

Give it a go, seriously, It is so simple and fluid and user friendly that one simply can't go wrong with cmake.

What business problems are you solving with the product? What benefits have you realized?

Since the years we have switched to cmake, build process has become a lot more streamlined. As we have multiple OSes ranging from Windows to ubuntu-server to RHEL and some tools needed to be built for all of them. Now, only one os independent cmakelists.txt can generate build files for those OSes. As a friend of mine said, 'before cmake, we had to use make and got thousands of dependency errors, now stuff works.'

What Other Continuous Delivery solution do you use?

Thanks for letting us know!
CMake review by <span>Ghada B.</span>
Ghada B.
Validated Reviewer
Verified Current User
Invitation from G2 Crowd
Reviewed On

The great Build framework for c++ programmer

What do you like best?

Qt Creator presents a lot of interesting features that I found useful:

- It is a build system generator.

- It is cross-platform, free and open-source software

- Requiring C++ compiler on its own build system

- Generates projects for many different IDEs.

- CMake has its own scripting language that runs on all platforms that CMake targets.

- It is used in conjunction with native build environments such as make, Xcode, and Microsoft Visual Studio.

- Supports outputting to projects like Code::Blocks, Xcode, etc.

- Easy to use and work with.

- stable.

What do you dislike?

I can't really find anything that i dislike. Qt Creator is fulfilling all my needs as for now. Maybe, the only thing that bothered me was the documentation is not good and need some improvement. Apart from that, everything else was fine.

Recommendations to others considering the product

I recommend CMake for anyone who wants to build c++ projects, It is is a great way to manage multiple projects and updating them easly.

What business problems are you solving with the product? What benefits have you realized?

I am currently working with CMake, I used it to plain Makefile and generate configuration files to ease the process of building and updating my c++ projects. The build project contains a CMakeLists.txt file in every directory that controls the build process.

CMake review by User
User
Validated Reviewer
Verified Current User
Invitation from G2 Crowd
Reviewed On

Easy-to-use deployment system

What do you like best?

CMake is easy to begin with compared to GNU autotool chains, just follow the official instructions. You could find library and add the include and linking directories with just one line. CMake can even download / compile / install dependencies automatically.

What do you dislike?

Although CMake is easy to begin with, CMake does lots of tricks, which sometimes make its behaviors unpredictable. You have to be very careful and follow the official documents closely to avoid some annoying problems. But for most projects we do not have to use these fancy features, CMake is still the only deployment system that I use.

Recommendations to others considering the product

Use CMake instead of GNU autotool chains if this is your in-house code.

What business problems are you solving with the product? What benefits have you realized?

depolyment system for in-house code.

CMake review by <span>Connor H.</span>
Connor H.
Validated Reviewer
Verified Current User
Invitation from G2 Crowd
Reviewed On

Painful but powerful!

What do you like best?

I love the format of the configuration files, they're fairly down to earth and look somewhat like the code I'd be writing whilst using CMake anyway so it's got that going for it. Configuring it once you get the hang of it is a breeze and it has strong support from the communities which rely on it so you can feel secure knowing that you'll be able to rely on it for a long time.

What do you dislike?

I'm not a huge fan of the man-esque online documentation, for people who aren't familiar with *n*x man pages a simple search for how to do something could turn into a witch hunt for something which turns out to be a single line. It's intimidating for people looking to get into using software like it really.

Recommendations to others considering the product

I would highly recommend checking out websites like StackOverflow for nifty snippets that you can reuse. If you use an IDE with snippet support (such as CLion by JetBrains) then you can add these snippets as templates so you simply type a trigger word to paste the snippet.

What business problems are you solving with the product? What benefits have you realized?

Until I made the switch to CMake I was confined to Windows only development environments - which also required a hefty 4GB installation for Visual Studio, my primary development environment - which was incredibly frustrating as I'm a minimalist when it comes to travel, so my laptop was packing a minimal Ubuntu image. I couldn't really make use of Microsoft's project structure on the go so I was unable to work when I had nothing else to do. CMake and it's IDE integration made it easy to configure builds for both platforms without wanting to tear my hair out.

CMake review by User in Research
User in Research
Validated Reviewer
Verified Current User
Invitation from G2 Crowd
Reviewed On

For quick, efficient and cross-platform solution builder

What do you like best?

I love the fact that I can create a general solution and just and projects after the other so easily, rebuild the entire solution, change environment... everything while staying cross-platform.

What do you dislike?

The tool is a bit low level and a few of my coworkers are reluctant to use it because it can be scary and seem complicated at the beginning.

Recommendations to others considering the product

Do not be scared and take the time to learn how to use it properly, you'll save time on the long run.

What business problems are you solving with the product? What benefits have you realized?

I easily build proof of concept and demonstration for my prospects and customers and keep everything on my machine, in a global environment which I never have to change !

Kate avatar
Kate from G2 Crowd

Learning about CMake?

I can help.
* We monitor all CMake reviews to prevent fraudulent reviews and keep review quality high. We do not post reviews by company employees or direct competitors. Validated reviews require the user to submit a screenshot of the product containing their user ID, in order to verify a user is an actual user of the product.

Compare CMake to Similar Solutions