CMake Cheat Sheet
cmake Cheat Sheet
Below is a cheat sheet for the most common statements you will use in a CMakeLists.txt
file!
By no means is this a complete reference guide, even for the mentioned functions (commonly they are just depicted in their most used form). For full documentation, see https://cmake.org/documentation/.
Sorted roughly by in which order you would use them (i.e. from compiling to linking).
Function | Explanation |
---|---|
set(srcs file1.c file2.c …) | Creates a variable (e.g. src ), and assigns something to it (e.g. the list file1.c file2.c). To clear a variable, do not provide second argument, e.g. set(srcs) . |
include_directories(dir1 dir2 …) | Adds the provided directory paths to the compilers list of directories that it will search for include files in, for any following targets. |
add_library(name STATIC/SHARED/MODULE file1.c file2.c …) | Adds a library target that will be build from the provided source files. DO NOT APPEND lib_ to the name (this is done automatically by cmake depending on architecture). |
add_executable(name file1.c file2.c …) | Adds an executable target (as opposed to a library target). |
link_libraries(lib_1 lib_2 …) | Links the provided libraries to all following targets in the CMakeLists.txt file. This is deprecated. It is recommended you use target_link_libraries() instead. |
target_link_libraries(target_lib other_lib_1 other_lib_2 …) | Links the provided libraries to the specific target library. link_libraries() can be used to apply to libraries to all following targets (i.e. no specific target is provided), however, it is deprecated. |
install(TARGETS targets…) | Used to place build output into certain directories on the user’s system (as well as do things like assign privileges to these files). |