CMake
Creating a CMake-based project
Quick start
Creating a CMake based project is the same process as described in the Quick Start Guide
with one change: under the Build System drop down, choose CMake
Now, when opening the project settings dialog, you will notice the under General → Makefile Generator the option selected is CMake
Building
With CMake based project, you should see 3 new entries for the project context menu:
Run CMakeExport CMakeList.txtOpen CMakeLists.txt
To get the build started, select the option Run CMake and CodeLite will generate new CMakeLists.txt file and will run CMake for it
You should see output similar to this:
C:\CMake\bin\cmake.exe C:\Users\Eran\Desktop\Test\CMakeTest -G"MinGW Makefiles"
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Check for working C compiler: C:/compilers/mingw64/bin/gcc.exe
-- Check for working C compiler: C:/compilers/mingw64/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/compilers/mingw64/bin/g++.exe
-- Check for working CXX compiler: C:/compilers/mingw64/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Eran/Desktop/Test/CMakeTest/cmake-build-Debug/CMakeTest
==== Done ====
Now you are ready to build your project, by simply clicking F7 and you should get an output similar to this:
cd C:\Users\Eran\Desktop\Test\CMakeTest\cmake-build-Debug\CMakeTest && C:/compilers/mingw64/bin/mingw32-make.exe -j24 SHELL=cmd.exe -e
Scanning dependencies of target CMakeTest
[ 50%] Building CXX object CMakeFiles/CMakeTest.dir/main.cpp.obj
[100%] Linking CXX executable ..\output\CMakeTest.exe
[100%] Built target CMakeTest
====0 errors, 0 warnings====
Tip
Remember to re-run Run CMake whenever you are adding new files to the project
Tip
CodeLite always builds outside of the source tree in a separate folder.
For example, for the Debug configuration, it will create the following build folder:
WORKSPACE_PATH/cmake-build-Debug and will instruct CMake to place all build files there
You can customise the CMake command from the project settings dialog, under General → Makefile Generator → Arguments
For example: in order to enable Debug build with a custom C++ compiler, you can set this in the Arguments field:
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=/opt/gcc/gcc-10
Customise
At the top of the generated CMakeList.txt file, you will find this line:
# -*- CMakeLists.txt generated by CodeLite IDE. Do not edit by hand -*-
The existence of the above line in each of the workspace CMakeLists.txt files, is an indication that these files
were generated by CodeLite and it safe to overwrite them.
In other words: if you wish to manually edit the files without having them regenerated each time by CodeLite, remove these lines
Adding user code to a generated CMakeLists.txt
Even though you can take ownership of the CMakeLists.txt by removing the header line, it is convenient to have them
updated automatically by CodeLite.
Luckily, CodeLite offers another way to edit generated CMakeLists.txt files without having your modifications removed.
For example, let's have a look at a generated CMakeLists.txt file:
# -*- CMakeLists.txt generated by CodeLite IDE. Do not edit by hand -*-
cmake_minimum_required(VERSION 3.5)
project(CMakeProject)
# Define some variables
set(PROJECT_PATH "${CMAKE_SOURCE_DIR}/CMakeProject")
#{{{{ User Code 1
# Place your code here
#}}}}
include_directories(
.
)
# Compiler options
add_definitions(-g)
add_definitions(-O0)
add_definitions(-Wall)
# Linker options
# Library path
set(CMAKE_LDFLAGS "${CMAKE_LDFLAGS} -L. ")
# Define the CXX sources
set ( CXX_SRCS
${CMAKE_SOURCE_DIR}/CMakeProject/main.cpp
)
set_source_files_properties(
${CXX_SRCS} PROPERTIES COMPILE_FLAGS
" -g -O0 -Wall")
#{{{{ User Code 2
# Place your code here
#}}}}
add_executable(CMakeProject ${CXX_SRCS} ${C_SRCS})
target_link_libraries(CMakeProject ${LINK_OPTIONS})
#{{{{ User Code 3
# Place your code here
#}}}}
There are 3 blocks marked with #{{{{ User Code 1, #{{{{ User Code 2 and #{{{{ User Code 3 These blocks are placed at the top,
middle and at the end of each generated CMakeLists.txt file.
Any code placed in these enclosed sections will remain there after regeneration of the CMakeLists.txt
Warning
Removing these section markers, will cause your code to be removed next time the CMakeLists.txt is generated