diff options
Diffstat (limited to 'Help/guide/tutorial/Step2')
-rw-r--r-- | Help/guide/tutorial/Step2/CMakeLists.txt | 16 | ||||
-rw-r--r-- | Help/guide/tutorial/Step2/MathFunctions/CMakeLists.txt | 5 | ||||
-rw-r--r-- | Help/guide/tutorial/Step2/MathFunctions/MathFunctions.cxx | 15 | ||||
-rw-r--r-- | Help/guide/tutorial/Step2/MathFunctions/MathFunctions.h | 6 | ||||
-rw-r--r-- | Help/guide/tutorial/Step2/MathFunctions/mysqrt.cxx | 6 | ||||
-rw-r--r-- | Help/guide/tutorial/Step2/MathFunctions/mysqrt.h | 7 | ||||
-rw-r--r-- | Help/guide/tutorial/Step2/TutorialConfig.h.in | 2 | ||||
-rw-r--r-- | Help/guide/tutorial/Step2/tutorial.cxx | 9 |
8 files changed, 40 insertions, 26 deletions
diff --git a/Help/guide/tutorial/Step2/CMakeLists.txt b/Help/guide/tutorial/Step2/CMakeLists.txt index 2b96128..0a06ed7 100644 --- a/Help/guide/tutorial/Step2/CMakeLists.txt +++ b/Help/guide/tutorial/Step2/CMakeLists.txt @@ -7,36 +7,20 @@ project(Tutorial VERSION 1.0) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED True) -# TODO 7: Create a variable USE_MYMATH using option and set default to ON - # configure a header file to pass some of the CMake settings # to the source code configure_file(TutorialConfig.h.in TutorialConfig.h) -# TODO 8: Use list() and APPEND to create a list of optional libraries -# called EXTRA_LIBS and a list of optional include directories called -# EXTRA_INCLUDES. Add the MathFunctions library and source directory to -# the appropriate lists. -# -# Only call add_subdirectory and only add MathFunctions specific values -# to EXTRA_LIBS and EXTRA_INCLUDES if USE_MYMATH is true. - # TODO 2: Use add_subdirectory() to add MathFunctions to this project # add the executable add_executable(Tutorial tutorial.cxx) -# TODO 9: Use EXTRA_LIBS instead of the MathFunctions specific values -# in target_link_libraries. - # TODO 3: Use target_link_libraries to link the library to our executable # TODO 4: Add MathFunctions to Tutorial's target_include_directories() # Hint: ${PROJECT_SOURCE_DIR} is a path to the project source. AKA This folder! -# TODO 10: Use EXTRA_INCLUDES instead of the MathFunctions specific values -# in target_include_directories. - # add the binary tree to the search path for include files # so that we will find TutorialConfig.h target_include_directories(Tutorial PUBLIC diff --git a/Help/guide/tutorial/Step2/MathFunctions/CMakeLists.txt b/Help/guide/tutorial/Step2/MathFunctions/CMakeLists.txt index b7779b7..c468b0e 100644 --- a/Help/guide/tutorial/Step2/MathFunctions/CMakeLists.txt +++ b/Help/guide/tutorial/Step2/MathFunctions/CMakeLists.txt @@ -1,2 +1,7 @@ # TODO 1: Add a library called MathFunctions # Hint: You will need the add_library command + +# TODO 7: Create a variable USE_MYMATH using option and set default to ON + +# TODO 8: If USE_MYMATH is ON, use target_compile_definitions to pass +# USE_MYMATH as a precompiled definition to our source files diff --git a/Help/guide/tutorial/Step2/MathFunctions/MathFunctions.cxx b/Help/guide/tutorial/Step2/MathFunctions/MathFunctions.cxx new file mode 100644 index 0000000..781d0ec --- /dev/null +++ b/Help/guide/tutorial/Step2/MathFunctions/MathFunctions.cxx @@ -0,0 +1,15 @@ +#include "MathFunctions.h" + +// TODO 11: include cmath + +// TODO 10: Wrap the mysqrt include in a precompiled ifdef based on USE_MYMATH +#include "mysqrt.h" + +namespace mathfunctions { +double sqrt(double x) +{ + // TODO 9: If USE_MYMATH is defined, use detail::mysqrt. + // Otherwise, use std::sqrt. + return detail::mysqrt(x); +} +} diff --git a/Help/guide/tutorial/Step2/MathFunctions/MathFunctions.h b/Help/guide/tutorial/Step2/MathFunctions/MathFunctions.h index cd36bcc..d5c2f22 100644 --- a/Help/guide/tutorial/Step2/MathFunctions/MathFunctions.h +++ b/Help/guide/tutorial/Step2/MathFunctions/MathFunctions.h @@ -1 +1,5 @@ -double mysqrt(double x); +#pragma once + +namespace mathfunctions { +double sqrt(double x); +} diff --git a/Help/guide/tutorial/Step2/MathFunctions/mysqrt.cxx b/Help/guide/tutorial/Step2/MathFunctions/mysqrt.cxx index 1e4d97a..ba0ac64 100644 --- a/Help/guide/tutorial/Step2/MathFunctions/mysqrt.cxx +++ b/Help/guide/tutorial/Step2/MathFunctions/mysqrt.cxx @@ -1,5 +1,9 @@ +#include "mysqrt.h" + #include <iostream> +namespace mathfunctions { +namespace detail { // a hack square root calculation using simple operations double mysqrt(double x) { @@ -20,3 +24,5 @@ double mysqrt(double x) } return result; } +} +} diff --git a/Help/guide/tutorial/Step2/MathFunctions/mysqrt.h b/Help/guide/tutorial/Step2/MathFunctions/mysqrt.h new file mode 100644 index 0000000..593d41e --- /dev/null +++ b/Help/guide/tutorial/Step2/MathFunctions/mysqrt.h @@ -0,0 +1,7 @@ +#pragma once + +namespace mathfunctions { +namespace detail { +double mysqrt(double x); +} +} diff --git a/Help/guide/tutorial/Step2/TutorialConfig.h.in b/Help/guide/tutorial/Step2/TutorialConfig.h.in index 6c09e1a..7e4d7fa 100644 --- a/Help/guide/tutorial/Step2/TutorialConfig.h.in +++ b/Help/guide/tutorial/Step2/TutorialConfig.h.in @@ -1,5 +1,3 @@ // the configured options and settings for Tutorial #define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@ #define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@ - -// TODO 13: use cmakedefine to define USE_MYMATH diff --git a/Help/guide/tutorial/Step2/tutorial.cxx b/Help/guide/tutorial/Step2/tutorial.cxx index 87f5e0f..7a2a595 100644 --- a/Help/guide/tutorial/Step2/tutorial.cxx +++ b/Help/guide/tutorial/Step2/tutorial.cxx @@ -3,11 +3,8 @@ #include <iostream> #include <string> -#include "TutorialConfig.h" - -// TODO 11: Only include MathFunctions if USE_MYMATH is defined - // TODO 5: Include MathFunctions.h +#include "TutorialConfig.h" int main(int argc, char* argv[]) { @@ -22,9 +19,7 @@ int main(int argc, char* argv[]) // convert input to double const double inputValue = std::stod(argv[1]); - // TODO 12: Use mysqrt if USE_MYMATH is defined and sqrt otherwise - - // TODO 6: Replace sqrt with mysqrt + // TODO 6: Replace sqrt with mathfunctions::sqrt // calculate square root const double outputValue = sqrt(inputValue); |