CMake/Examples: Difference between revisions
Daviddoria (talk | contribs) (Created page with "Welcome to the CMake Wiki Examples! These short snippets which show you how to perform many common CMake procedures. Please see [http://www.cmake.org/cmake/help/cmake-2-8-docs.ht...") |
Daviddoria (talk | contribs) mNo edit summary |
||
Line 3: | Line 3: | ||
Please add examples as you find common procedures which are not explained here! | Please add examples as you find common procedures which are not explained here! | ||
=Basics= | |||
= | |||
=Check operating system= | =Check operating system= | ||
Line 74: | Line 68: | ||
</source> | </source> | ||
=Compiler options= | |||
=Set a cmake flag= | ==Set a cmake flag== | ||
<source lang="cmake"> | <source lang="cmake"> | ||
ccmake ../../src/boost -DCMAKE_IS_EXPERIMENTAL=YES_I_KNOW | ccmake ../../src/boost -DCMAKE_IS_EXPERIMENTAL=YES_I_KNOW | ||
</source> | </source> | ||
=Set a cpp flag= | ==Set a cpp flag== | ||
\subsection{Global} | \subsection{Global} | ||
<source lang="cmake"> | <source lang="cmake"> | ||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__WXGTK__") | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__WXGTK__") | ||
</source> | </source> | ||
==Force g++== | |||
<source lang="cmake"> | |||
set(SPIN_SRCS main.c analyze.c ../spinImage/dhFaceSpinImage.c ../spinImage/faceSpinImage.c ../spinImage/normalizedSpinImage.c ../spinImage/spinImage.c ../spinImage/spinImageHashed.c ../spinImage/vectorArray.c) | |||
add_executable(SpinRecognize ${SPIN_SRCS}) | |||
set_source_files_properties(${SPIN_SRCS} PROPERTIES LANGUAGE CXX) | |||
</source> | |||
==Per-target== | ==Per-target== |
Revision as of 13:36, 17 November 2010
Welcome to the CMake Wiki Examples! These short snippets which show you how to perform many common CMake procedures. Please see [1] for the verbose documentation.
Please add examples as you find common procedures which are not explained here!
Basics
Check operating system
<source lang="cmake">
IF(WIN32) ...do something... ELSE(WIN32) ...do something else... ENDIF(WIN32)
</source>
View PATH
<source lang="cmake"> \verb|MESSAGE("$ENV{PATH}") </source>
View a variable
<source lang="cmake"> MESSAGE("CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}") </source>
Set a variable
<source lang="cmake"> SET(VARIABLE VALUE) </source>
Fix Mininum Version Error
<source lang="cmake"> cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR) </source>
Look in the directory that the CMakeLists.txt file is for header and implementation files
<source lang="cmake"> INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}) </source>
Set Link Directories
<source lang="cmake"> LINK_DIRECTORIES(${LINK_DIRECTORIES} /usr/local/lib) </source>
Set Include Directories
This command adds a path to the include directories, you do NOT have to do the 'export' style ``keep everything that is here and add this one syntax. <source lang="cmake"> INCLUDE_DIRECTORIES(/some/directory) </source>
View the directories that are set
<source lang="cmake"> get_property(inc_dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES) message("inc_dirs = ${inc_dirs}") </source>
Automate configure and generate
Note 'cmake' instead of 'ccmake' (ccmake is curses cmake (curses is the terminal gui)) <source lang="cmake"> cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/mylocation ../ </source>
Compiler options
Set a cmake flag
<source lang="cmake"> ccmake ../../src/boost -DCMAKE_IS_EXPERIMENTAL=YES_I_KNOW </source>
Set a cpp flag
\subsection{Global} <source lang="cmake"> SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__WXGTK__") </source>
Force g++
<source lang="cmake">
set(SPIN_SRCS main.c analyze.c ../spinImage/dhFaceSpinImage.c ../spinImage/faceSpinImage.c ../spinImage/normalizedSpinImage.c ../spinImage/spinImage.c ../spinImage/spinImageHashed.c ../spinImage/vectorArray.c)
add_executable(SpinRecognize ${SPIN_SRCS}) set_source_files_properties(${SPIN_SRCS} PROPERTIES LANGUAGE CXX) </source>
Per-target
<source lang="cmake"> set_target_properties(myexe_target
PROPERTIES COMPILE_FLAGS "-Wall")
</source>
Set the default build type
<source lang="cmake"> SET(CMAKE_BUILD_TYPE Debug CACHE STRING "default to debug" FORCE) </source>
Custom variable
<source lang="cmake"> SET(BUILD_PARAVIEW_PLUGIN ON CACHE STRING "Build Paraview plugin?" FORCE) </source>
Linking to specific libraries
VXL
Add the path to your environment: <source lang="cmake"> export VXLBIN="/home/doriad/bin/vxl" </source>
<source lang="cmake"> FIND_PACKAGE(VXL REQUIRED) INCLUDE(${VXL_CMAKE_DIR}/UseVXL.cmake) </source>
VTK
Add the path to your environment: <source lang="cmake"> export VTK_DIR="/home/doriad/bin/ParaView3/VTK" </source>
<source lang="cmake"> FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE}) </source>
Boost
Add to the environment: <source lang="cmake"> export BOOST_ROOT="/home/doriad/src/boost" export BOOST_LIBRARYDIR="/home/doriad/bin/boost/lib" </source>
<source lang="cmake"> SET(Boost_USE_MULTITHREAD ON) #set a flag FIND_PACKAGE(Boost 1.34.1 COMPONENTS date_time filesystem) INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${Boost_INCLUDE_DIRS}) LINK_DIRECTORIES(${LINK_DIRECTORIES} ${Boost_LIBRARY_DIRS}) </source>
Get Help Using a Library
<source lang="cmake"> cmake --help-module FindBoost </source>
Add new libraries to CMake
<source lang="cmake"> /usr/share/cmake/Modules/FindOpenGL.cmake| </source>
Dependency Graph
<source lang="cmake"> ccmake ../src/Program/ --graphviz=test.graph dotty test.graph </source>
CTest
Run a specific test by number
e.g. Test 622 <source lang="cmake"> ctest -I 622,622 </source>
Run a range of tests
e.g. Test 622 to 625 <source lang="cmake"> ctest -I 622,625 </source>
Run a test by name
<source lang="cmake"> ctest -R "itkTransformPoint*"| </source>
Link to a library
<source lang="cmake"> ADD_EXECUTABLE(ColoredLines ColoredLines.cpp) TARGET_LINK_LIBRARIES(ColoredLines vtkHybrid) </source>
Create a library
<source lang="cmake"> add_library(MatlabLibrary ./MatlabDll/LidarK.cpp) </source>