.. | ||
.gitignore | ||
CMakeLists.txt | ||
hello.cpp | ||
readme.md |
C++ with CMAKE
The most basic project is an executable built from source code files.
For simple projects, a three line CMakeLists.txt
file is all that is required. Inside this file are all commands for CMAKE.
You can build and run our project now. First, run the cmake executable (or cmake-gui) to configure the project and then build it with your chosen build tool.
Move to the CMake source code tree and create a build directory:
mkdir build
Next, navigate to the build directory and run CMake to configure the project and generate a native build system:
cd build
cmake ..
Then call that build system to actually compile/link the project:
cmake --build .
Version Numbering and Header Files
Provide the executable and project with a version number, using CMakeLists.txt provides more flexibility. This can be done by using the VERSION
append to the project name.
cmake_minimum_required(VERSION 3.10)
# set the project name and version
project(HelloWorld VERSION 1.0)
You can also configure header files to pass version numbers to the source code. Here a header file Hello.h.in
will be read and the version numbers passed to get Hello.h
configure_file(Hello.h.in Hello.h)
As the configured file will be written into the binary tree, add that directory to the list of paths to search for include files.
target_include_directories(HelloWorld PUBLIC
"${PROJECT_BINARY_DIR}"
)
When CMake configures header files the values inside @...@
will be replaced.
Specify the C++ Standard
Sometimes you need to explicitly state in the CMake code that it should use the correct flags. The easiest way to enable support for a specific C++ standard in CMake is by using the CMAKE_CXX_STANDARD
variable. Make sure to add the CMAKE_CXX_STANDARD
declarations above the call to add_executable
.
cmake_minimum_required(VERSION 3.10)
# set the project name and version
project(HelloWorld VERSION 1.0)
# specify the C++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
Rebuild
Build our project again. As you already created the bild directory skip this step and proceed:
cd build
cmake --build .