CMake
From ArmadeusWiki
Page under construction...
Informations on this page are not guaranteed !!
Contents |
Forewords
Cmake is a utility that generate Makefile for your projects. Therefore, it does not need to be cross-compiled.
Configure a project using CMake
The toolchain file
This file describes the (cross-)toolchain required to compile projects managed with CMake.
Copy-paste the following lines in a *.cmake file and set the variables of "Armadeus subsection" accordingly to your configuration.
## ## toolchain.cmake ## ## ==== Settings Section ==== ## ---- Armadeus subsection ---- # set the Armadeus board (comments/uncomment according to your board) set(ARMADEUS_BOARD "APF27") # set(ARMADEUS_BOARD "APF9328") # set the uClibc version set(ARMADEUS_UCLIBC_VERSION "0.9.29") # set the Armadeus root path set(ARMADEUS_ROOT "/path/to/your/armadeus/sdk") ## ---- CMake subsection ---- # this one is important set(CMAKE_SYSTEM_NAME "Linux") # this one not so much set(CMAKE_SYSTEM_VERSION "1") ## ==== CMake Variables ==== if(ARMADEUS_BOARD STREQUAL "APF27") set(ARMADEUS_MARCH "armv5te") elseif(ARMADEUS_BOARD STREQUAL "APF9328") set(ARMADEUS_MARCH "armv4t") else(ARMADEUS_BOARD STREQUAL "APF27") message("\n" "===========================================================\n" "= Cannot determine the target =\n" "===========================================================\n" ) endif(ARMADEUS_BOARD STREQUAL "APF27") set(ARMADEUS_ROOT_BR ${ARMADEUS_ROOT}/buildroot) set(ARMADEUS_ROOT_CTC ${ARMADEUS_ROOT_BR}/build_${ARMADEUS_MARCH}/staging_dir) set(ARMADEUS_ROOT_CTC_BINDIR ${ARMADEUS_ROOT_CTC}/usr/bin) set(ARMADEUS_CTC_PREFIX "arm-linux-") # specify the cross-toolchain (compiler, header and library directories) set(CMAKE_C_COMPILER ${ARMADEUS_ROOT_CTC_BINDIR}/${ARMADEUS_CTC_PREFIX}gcc) set(CMAKE_CXX_COMPILER ${ARMADEUS_ROOT_CTC_BINDIR}/${ARMADEUS_CTC_PREFIX}g++) set(CMAKE_INCLUDE_PATH ${ARMADEUS_ROOT_BR}/toolchain_build_${ARMADEUS_MARCH}/uClibc-${ARMADEUS_UCLIBC_VERSION}/include) set(CMAKE_LIBRARY_PATH ${ARMADEUS_ROOT_CTC}) set(CMAKE_FIND_ROOT_PATH ${ARMADEUS_ROOT_CTC} ${CMAKE_INCLUDE_PATH}) # search for programs in the build host directories set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) # for libraries and headers in the target directories set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
This file should be generated by Buildroot at the time of the Armadeus SDK setup.
Run CMake
TODO
Goto here for an example (step #5)
Use CMake in your a project
TODO
Goto here for an example
See also
- Cmake documentation
- Examples provided by existing projects (example from OpenCV)
Thanks
Thanks to Ctaf42 for his help about CMake.