If it can, then we have succeeded in adding TBB as a dependency in our project. We then use CMake's module CheckIncludeFileCXX to have CMake test whether it can include the tbb/tbb.h header file in code and compile it. It is only useful if you want to see how stuff works. It can take very long and isn't recommended for regular use. Any following targets that need to be built usign ExternalProject_Step are also built. It will then compile the source and all its dependencies that are specified. The number of CPUs can be modified by editing the NCPU variable in the file. The ExternalProject_Add will uncompress the TBB source file we downloaded earlier and compile it using as many CPU cores as available in your system. We also add the sub-projects in TBB that are required in the file using ExternalProject_Step. We add the TBB project using the ExternalProject_Add command to the The best way to verify this works is to first test it on Linux or MacOS. NOTE: To build TBB on Windows requires GNU Make or gmake installed and in the PATH or set it in the TBB_MAKE variable.
The details of each of these functions can be viewed in the CMake manual or using the command man cmake on your terminal.
To build the TBB source, we have to use the CMake functions provided by the ExternalProject module, viz., ExternalProject_Add, ExternalProject_Get_Property and ExternalProject_Add_Step. TBB is a C++ library, hence our example will be with C++ source.
Below we demonstrate how to download the latest source from the TBB website, and how to use features present in CMake to make sure that the project gets compiled and ready to use in your project.
In this blog post we demonstrate how to use CMake to build a large toolkit like Intel® Threading Building Blocks (TBB).Īlthough TBB might be available in your Linux operating system's package manager, sometimes you may want to compile the latest version from source using a different compiler like Intel's C Compiler ( icc) instead of GNU C Compiler ( gcc), or you're building software that runs on both Linux and Windows, and you don't want to use a pre-built version of TBB from Intel.ĬMake has a module called ExternalProject that can do this for you. As a longtime user of CMake we have written build systems for large and complex projects in it that also build Java and C# wrappers, or use it for auto-generating cross-platform C/C++ code using Perl. The most common use of CMake is to build projects that are written in C, C++ or both. It has its own domain specific language and various modules for most commonly used libraries and software frameworks. A target can be an executable, a library, or a generated file. CMake is an excellent cross-platform build tool for automatically generating Unix Makefiles, Windows NMake Makefiles, Microsoft Visual Studio® Solution projects or Apple Xcode® projects for MacOS. CMake is used to build your application together with the Zephyr kernel.