summaryrefslogtreecommitdiffstats
path: root/Tests/Tutorial/Step2
diff options
context:
space:
mode:
authorKitware Robot <kwrobot@kitware.com>2019-05-30 16:41:21 (GMT)
committerBetsy McPhail <betsy.mcphail@kitware.com>2019-06-18 14:36:16 (GMT)
commit862cfc0e6c3f275db73281f3b9b989704251ab6a (patch)
tree91c65801e02f337fa95e9776a6bf59057d55ec17 /Tests/Tutorial/Step2
parentd2fde9480955cf2246519357e01ab5142a067efc (diff)
downloadCMake-862cfc0e6c3f275db73281f3b9b989704251ab6a.zip
CMake-862cfc0e6c3f275db73281f3b9b989704251ab6a.tar.gz
CMake-862cfc0e6c3f275db73281f3b9b989704251ab6a.tar.bz2
Help/guide/tutorial: Adopt tutorial code
Diffstat (limited to 'Tests/Tutorial/Step2')
-rw-r--r--Tests/Tutorial/Step2/CMakeLists.txt23
-rw-r--r--Tests/Tutorial/Step2/MathFunctions/CMakeLists.txt1
-rw-r--r--Tests/Tutorial/Step2/MathFunctions/MathFunctions.h1
-rw-r--r--Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx23
-rw-r--r--Tests/Tutorial/Step2/TutorialConfig.h.in3
-rw-r--r--Tests/Tutorial/Step2/directions.txt101
-rw-r--r--Tests/Tutorial/Step2/tutorial.cxx23
7 files changed, 0 insertions, 175 deletions
diff --git a/Tests/Tutorial/Step2/CMakeLists.txt b/Tests/Tutorial/Step2/CMakeLists.txt
deleted file mode 100644
index 8e50e7c..0000000
--- a/Tests/Tutorial/Step2/CMakeLists.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-cmake_minimum_required(VERSION 3.3)
-project(Tutorial)
-
-set(CMAKE_CXX_STANDARD 14)
-# the version number.
-set(Tutorial_VERSION_MAJOR 1)
-set(Tutorial_VERSION_MINOR 0)
-
-# 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 executable
-add_executable(Tutorial tutorial.cxx)
-
-# add the binary tree to the search path for include files
-# so that we will find TutorialConfig.h
-target_include_directories(Tutorial PUBLIC
- "${PROJECT_BINARY_DIR}"
- )
diff --git a/Tests/Tutorial/Step2/MathFunctions/CMakeLists.txt b/Tests/Tutorial/Step2/MathFunctions/CMakeLists.txt
deleted file mode 100644
index 8b443a6..0000000
--- a/Tests/Tutorial/Step2/MathFunctions/CMakeLists.txt
+++ /dev/null
@@ -1 +0,0 @@
-add_library(MathFunctions mysqrt.cxx)
diff --git a/Tests/Tutorial/Step2/MathFunctions/MathFunctions.h b/Tests/Tutorial/Step2/MathFunctions/MathFunctions.h
deleted file mode 100644
index cd36bcc..0000000
--- a/Tests/Tutorial/Step2/MathFunctions/MathFunctions.h
+++ /dev/null
@@ -1 +0,0 @@
-double mysqrt(double x);
diff --git a/Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx
deleted file mode 100644
index 7d9379e..0000000
--- a/Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "MathFunctions.h"
-#include <iostream>
-
-// a hack square root calculation using simple operations
-double mysqrt(double x)
-{
- if (x <= 0) {
- return 0;
- }
-
- double result = x;
-
- // do ten iterations
- for (int i = 0; i < 10; ++i) {
- if (result <= 0) {
- result = 0.1;
- }
- double delta = x - (result * result);
- result = result + 0.5 * delta / result;
- std::cout << "Computing sqrt of " << x << " to be " << result << std::endl;
- }
- return result;
-}
diff --git a/Tests/Tutorial/Step2/TutorialConfig.h.in b/Tests/Tutorial/Step2/TutorialConfig.h.in
deleted file mode 100644
index 7e4d7fa..0000000
--- a/Tests/Tutorial/Step2/TutorialConfig.h.in
+++ /dev/null
@@ -1,3 +0,0 @@
-// the configured options and settings for Tutorial
-#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
-#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
diff --git a/Tests/Tutorial/Step2/directions.txt b/Tests/Tutorial/Step2/directions.txt
deleted file mode 100644
index 48de7a2..0000000
--- a/Tests/Tutorial/Step2/directions.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-# Adding a Library #
-
-Now we will add a library to our project. This library will contain our own
-implementation for computing the square root of a number. The executable can
-then use this library instead of the standard square root function provided by
-the compiler.
-
-For this tutorial we will put the library into a subdirectory
-called MathFunctions. It will have the following one line CMakeLists file:
-
- add_library(MathFunctions mysqrt.cxx)
-
-The source file mysqrt.cxx has one function called mysqrt that provides similar
-functionality to the compiler’s sqrt function. To make use of the new library
-we add an add_subdirectory call in the top-level CMakeLists file so that the
-library will get built. We add the new library to the executable, and add the
-MathFunctions as an include directory so that mqsqrt.h header file can be
-found. The last few lines of the top-level CMakeLists file now look like:
-
-
- add_subdirectory(MathFunctions)
-
- #add the executable
- add_executable(Tutorial tutorial.cxx)
-
- target_link_libraries(Tutorial ${EXTRA_LIBS})
-
-
-Now let us make the MathFunctions library optional. While for the tutorial
-there really isn’t any need to do so, but with larger projects this is a common
-occurrence. The first step is to add an option to the top-level CMakeLists file.
-
- option (USE_MYMATH
- "Use tutorial provided math implementation" ON)
-
-This will show up in CMake GUI and ccmake with a default value of ON that can
-be changed by the user. This setting will be stored so that the user does not
-need to set the value each time they run CMake on this build directory.
-
-The next change is to make building and linking the MathFunctions library
-conditional. To do this we change the top-level CMakeLists file to look like
-the following:
-
- cmake_minimum_required(VERSION 3.3)
- project(Tutorial)
-
- set(CMAKE_CXX_STANDARD 14)
-
- # the version number.
- set(Tutorial_VERSION_MAJOR 1)
- set(Tutorial_VERSION_MINOR 0)
-
- # 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"
- )
-
- # should we use our own math functions
- option(USE_MYMATH "Use tutorial provided math implementation" ON)
-
- # add the MathFunctions library?
- if(USE_MYMATH)
- add_subdirectory(MathFunctions)
- list(APPEND EXTRA_LIBS MathFunctions)
- list(APPEND EXTRA_INCLUDES "${PROJECT_SOURCE_DIR}/MathFunctions")
- endif(USE_MYMATH)
-
- # add the executable
- add_executable(Tutorial tutorial.cxx)
-
- target_link_libraries(Tutorial ${EXTRA_LIBS})
-
- # add the binary tree to the search path for include files
- # so that we will find TutorialConfig.h
- target_include_directories(Tutorial PUBLIC
- "${PROJECT_BINARY_DIR}"
- ${EXTRA_INCLUDES}
- )
-
-Note the use of the variables EXTRA_LIBS, and EXTRA_INCLUDES to collect
-up any optional libraries to later be linked into the executable. This is a
-classic approach when dealing with many optional components, we will cover the
-modern approach in the next step. For now the corresponding changes to the
-source code are fairly straightforward and leave us with:
-
- #ifdef USE_MYMATH
- double outputValue = mysqrt(inputValue);
- #else
- double outputValue = sqrt(inputValue);
- #endif
-
-Since the source code now requires USE_MYMATH we can add it to the
-TutorialConfig.h.in. Simply add the following line:
- #cmakedefine USE_MYMATH
-
-Run cmake or cmake-gui to configure the project and then build it with your
-chosen build tool and then run the built Tutorial executable.
-
-Which function gives better results, Step1’s sqrt or Step2’s mysqrt?
diff --git a/Tests/Tutorial/Step2/tutorial.cxx b/Tests/Tutorial/Step2/tutorial.cxx
deleted file mode 100644
index 5ba34e8..0000000
--- a/Tests/Tutorial/Step2/tutorial.cxx
+++ /dev/null
@@ -1,23 +0,0 @@
-// A simple program that computes the square root of a number
-#include <cmath>
-#include <iostream>
-#include <string>
-
-#include "TutorialConfig.h"
-
-int main(int argc, char* argv[])
-{
- if (argc < 2) {
- std::cout << argv[0] << " Version " << Tutorial_VERSION_MAJOR << "."
- << Tutorial_VERSION_MINOR << std::endl;
- std::cout << "Usage: " << argv[0] << " number" << std::endl;
- return 1;
- }
-
- double inputValue = std::stod(argv[1]);
-
- double outputValue = sqrt(inputValue);
- std::cout << "The square root of " << inputValue << " is " << outputValue
- << std::endl;
- return 0;
-}