Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

How long should a giant C++ code base take to compile?


How giant is giant?

I've seen tens of thousands of lines of code compile in 30 minutes.

I've seen a hundred thousand lines of code compile in 2 minutes.

It really depends on how the project is laid out. If you're using lots of header-only libraries and try to compile monolithically (like soooooo many C++ applications do these days), you're going to have a bad (compile) time.


tens of thousands? that's small. we're talking MLOCs here.


With a good CMake configuration and Ninja and ccache, a minute or two max.

Your CMake makes incremental builds safe, and the ccache saves you when switching between branches.


CMake helps a good bit, ccache goes further, and ninja helps a bit too. But none of them can help templated header-only libraries with complex interdependencies. It gets particularly bad when the developer #includes a convenience header to bring in _everything_ in the library instead of just what they need.


Agreed. Good use of PImpl when you have large external header-only libraries is also generally recommended to keep the dependency graph nicer.

Also from what I've seen, large header-only codebases tend to be external and thus generally don't change that much, so if you can limit your own internal dependency tree ccache can still save you.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: