diff options
Diffstat (limited to 'Help/guide/tutorial/index.rst')
-rw-r--r-- | Help/guide/tutorial/index.rst | 67 |
1 files changed, 10 insertions, 57 deletions
diff --git a/Help/guide/tutorial/index.rst b/Help/guide/tutorial/index.rst index 00fa39a715..94753d5dc9 100644 --- a/Help/guide/tutorial/index.rst +++ b/Help/guide/tutorial/index.rst @@ -414,27 +414,23 @@ tutorial assume that they are not common. If the platform has ``log`` and ``exp`` then we will use them to compute the square root in the ``mysqrt`` function. We first test for the availability of -these functions using the :module:`CheckSymbolExists` module in the top-level -``CMakeLists.txt``. On some platforms, we will need to link to the m library. -If ``log`` and ``exp`` are not initially found, require the m library and try -again. - -We're going to use the new defines in ``TutorialConfig.h.in``, so be sure to -set them before that file is configured. +these functions using the :module:`CheckSymbolExists` module in +``MathFunctions/CMakeLists.txt``. On some platforms, we will need to link to +the m library. If ``log`` and ``exp`` are not initially found, require the m +library and try again. .. literalinclude:: Step6/MathFunctions/CMakeLists.txt :language: cmake :start-after: # does this system provide the log and exp functions? :end-before: # add compile definitions -Now let's add these defines to ``TutorialConfig.h.in`` so that we can use them -from ``mysqrt.cxx``: - -.. code-block:: console +If available, use :command:`target_compile_definitions` to specify +``HAVE_LOG`` and ``HAVE_EXP`` as ``PRIVATE`` compile definitions. - // does the platform provide exp and log functions? - #cmakedefine HAVE_LOG - #cmakedefine HAVE_EXP +.. literalinclude:: Step6/MathFunctions/CMakeLists.txt + :language: cmake + :start-after: # add compile definitions + :end-before: # install rules If ``log`` and ``exp`` are available on the system, then we will use them to compute the square root in the ``mysqrt`` function. Add the following code to @@ -456,51 +452,8 @@ Run the :manual:`cmake <cmake(1)>` executable or the :manual:`cmake-gui <cmake-gui(1)>` to configure the project and then build it with your chosen build tool and run the Tutorial executable. -You will notice that we're not using ``log`` and ``exp``, even if we think they -should be available. We should realize quickly that we have forgotten to -include ``TutorialConfig.h`` in ``mysqrt.cxx``. - -We will also need to update ``MathFunctions/CMakeLists.txt`` so ``mysqrt.cxx`` -knows where this file is located: - -.. code-block:: cmake - - target_include_directories(MathFunctions - INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} - PRIVATE ${CMAKE_BINARY_DIR} - ) - -After making this update, go ahead and build the project again and run the -built Tutorial executable. If ``log`` and ``exp`` are still not being used, -open the generated ``TutorialConfig.h`` file from the build directory. Maybe -they aren't available on the current system? - Which function gives better results now, sqrt or mysqrt? -Specify Compile Definition --------------------------- - -Is there a better place for us to save the ``HAVE_LOG`` and ``HAVE_EXP`` values -other than in ``TutorialConfig.h``? Let's try to use -:command:`target_compile_definitions`. - -First, remove the defines from ``TutorialConfig.h.in``. We no longer need to -include ``TutorialConfig.h`` from ``mysqrt.cxx`` or the extra include in -``MathFunctions/CMakeLists.txt``. - -Next, we can move the check for ``HAVE_LOG`` and ``HAVE_EXP`` to -``MathFunctions/CMakeLists.txt`` and then specify those values as ``PRIVATE`` -compile definitions. - -.. literalinclude:: Step6/MathFunctions/CMakeLists.txt - :language: cmake - :start-after: # does this system provide the log and exp functions? - :end-before: # install rules - -After making these updates, go ahead and build the project again. Run the -built Tutorial executable and verify that the results are same as earlier in -this step. - Adding a Custom Command and Generated File (Step 6) =================================================== |