# Installing and Testing # Now we can start adding testing support and install rules to our project. The install rules are fairly simple; for MathFunctions we install the library and header file, for the application we install the executable and configured header. So to MathFunctions/CMakeLists.txt we add: install (TARGETS MathFunctions DESTINATION bin) install (FILES MathFunctions.h DESTINATION include) And the to top-level CMakeLists.txt we add: install(TARGETS Tutorial DESTINATION bin) install(FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h" DESTINATION include ) That is all that is needed to create a basic local install of the tutorial. Run cmake or cmake-gui to configure the project and then build it with your chosen build tool. Then build the “install” target by typing 'make install' from the command line or build the INSTALL target from an IDE. This will install the appropriate header files, libraries, and executables. Verify that the installed Tutorial runs. Note: The CMake variable CMAKE_INSTALL_PREFIX is used to determine the root of where the files will be installed. Next let's test our application. Adding testing is an easy process. At the end of the top-level CMakeLists file we can add a number of basic tests to verify that the application is working correctly. # enable testing enable_testing() # does the application run add_test(NAME Runs COMMAND Tutorial 25) # does the usage message work? add_test(NAME Usage COMMAND Tutorial) set_tests_properties(Usage PROPERTIES PASS_REGULAR_EXPRESSION "Usage:.*number" ) # define a function to simplify adding tests function(do_test target arg result) add_test(NAME Comp${arg} COMMAND ${target} ${arg}) set_tests_properties(Comp${arg} PROPERTIES PASS_REGULAR_EXPRESSION ${result} ) endfunction(do_test) # do a bunch of result based tests do_test(Tutorial 25 "25 is 5") do_test(Tutorial -25 "-25 is [-nan|nan|0]") do_test(Tutorial 0.0001 "0.0001 is 0.01") The first test simply verifies that the application runs, does not segfault or otherwise crash, and has a zero return value. This is the basic form of a CTest test. The Usage test uses a regular expression to verify that the usage message is printed when an incorrect number of arguments are provided. Lastly, we have a function called do_test that simplifies running the application and verifying that the computed square root is correct for given input. To run tests, cd to the binary directory and run “ctest -N” and “ctest -VV”.