mirror of
https://github.com/reactos/CMake.git
synced 2024-12-14 15:19:39 +00:00
9db3116226
Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
73 lines
1.9 KiB
CMake
73 lines
1.9 KiB
CMake
cmake_minimum_required (VERSION 2.6)
|
|
project (Tutorial)
|
|
|
|
# The version number.
|
|
set (Tutorial_VERSION_MAJOR 1)
|
|
set (Tutorial_VERSION_MINOR 0)
|
|
|
|
# does this system provide the log and exp functions?
|
|
include (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
|
|
check_function_exists (log HAVE_LOG)
|
|
check_function_exists (exp HAVE_EXP)
|
|
|
|
# should we use our own math functions
|
|
option(USE_MYMATH "Use tutorial provided math implementation" ON)
|
|
|
|
# configure a header file to pass some of the CMake settings
|
|
# to the source code
|
|
configure_file (
|
|
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
|
|
"${PROJECT_BINARY_DIR}/TutorialConfig.h"
|
|
)
|
|
|
|
# add the binary tree to the search path for include files
|
|
# so that we will find TutorialConfig.h
|
|
include_directories ("${PROJECT_BINARY_DIR}")
|
|
|
|
# add the MathFunctions library?
|
|
if (USE_MYMATH)
|
|
include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions")
|
|
add_subdirectory (MathFunctions)
|
|
set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
|
|
endif ()
|
|
|
|
# add the executable
|
|
add_executable (Tutorial tutorial.cxx)
|
|
target_link_libraries (Tutorial ${EXTRA_LIBS})
|
|
|
|
# add the install targets
|
|
install (TARGETS Tutorial DESTINATION bin)
|
|
install (FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"
|
|
DESTINATION include)
|
|
|
|
# enable testing
|
|
enable_testing ()
|
|
|
|
# does the application run
|
|
add_test (TutorialRuns Tutorial 25)
|
|
|
|
# does the usage message work?
|
|
add_test (TutorialUsage Tutorial)
|
|
set_tests_properties (TutorialUsage
|
|
PROPERTIES
|
|
PASS_REGULAR_EXPRESSION "Usage:.*number"
|
|
)
|
|
|
|
#define a macro to simplify adding tests
|
|
macro (do_test arg result)
|
|
add_test (TutorialComp${arg} Tutorial ${arg})
|
|
set_tests_properties (TutorialComp${arg}
|
|
PROPERTIES PASS_REGULAR_EXPRESSION ${result}
|
|
)
|
|
endmacro ()
|
|
|
|
# do a bunch of result based tests
|
|
do_test (4 "4 is 2")
|
|
do_test (9 "9 is 3")
|
|
do_test (5 "5 is 2.236")
|
|
do_test (7 "7 is 2.645")
|
|
do_test (25 "25 is 5")
|
|
do_test (-25 "-25 is 0")
|
|
do_test (0.0001 "0.0001 is 0.01")
|
|
|