diff options
author | Markus Ferrell <markus.ferrell@kitware.com> | 2022-08-15 16:05:35 (GMT) |
---|---|---|
committer | Markus Ferrell <markus.ferrell@kitware.com> | 2022-08-15 16:06:46 (GMT) |
commit | 953d729622cbd89c5c9c847744b70c6f21bad7c0 (patch) | |
tree | 1ede043444a08e0146550c83b4250ddca716a4c8 | |
parent | c59e1641554cb1b18f4b3a62d20559cfb689a9df (diff) | |
download | CMake-953d729622cbd89c5c9c847744b70c6f21bad7c0.zip CMake-953d729622cbd89c5c9c847744b70c6f21bad7c0.tar.gz CMake-953d729622cbd89c5c9c847744b70c6f21bad7c0.tar.bz2 |
Tutorial: Collapse step 1 solutions
-rw-r--r-- | Help/guide/tutorial/A Basic Starting Point.rst | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/Help/guide/tutorial/A Basic Starting Point.rst b/Help/guide/tutorial/A Basic Starting Point.rst index 33f712d..69f6748 100644 --- a/Help/guide/tutorial/A Basic Starting Point.rst +++ b/Help/guide/tutorial/A Basic Starting Point.rst @@ -117,25 +117,44 @@ As mentioned above, a three line ``CMakeLists.txt`` is all that we need to get up and running. The first line is to use :command:`cmake_minimum_required` to set the CMake version as follows: +.. raw:: html + + <details><summary>TODO 1: Click to show/hide answer</summary> + .. literalinclude:: Step2/CMakeLists.txt :caption: TODO 1: CMakeLists.txt :name: CMakeLists.txt-cmake_minimum_required :language: cmake :end-before: # set the project name and version +.. raw:: html + + </details> + The next step to make a basic project is to use the :command:`project` command as follows to set the project name: +.. raw:: html + + <details><summary>TODO 2: Click to show/hide answer</summary> + .. code-block:: cmake :caption: TODO 2: CMakeLists.txt :name: CMakeLists.txt-project project(Tutorial) +.. raw:: html + + </details> The last command to call for a basic project is :command:`add_executable`. We call it as follows: +.. raw:: html + + <details><summary>TODO 3: Click to show/hide answer</summary> + .. literalinclude:: Step2/CMakeLists.txt :caption: TODO 3: CMakeLists.txt :name: CMakeLists.txt-add_executable @@ -143,6 +162,10 @@ The last command to call for a basic project is :start-after: # add the executable :end-before: # add the binary tree to the search path for include files +.. raw:: html + + </details> + Exercise 2 - Specifying the C++ Standard ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -208,6 +231,10 @@ We start by adding some C++11 features to our project by replacing ``atof`` with ``std::stod`` in ``tutorial.cxx``. This looks like the following: +.. raw:: html + + <details><summary>TODO 4: Click to show/hide answer</summary> + .. literalinclude:: Step2/tutorial.cxx :caption: TODO 4: tutorial.cxx :name: tutorial.cxx-cxx11 @@ -215,6 +242,10 @@ the following: :start-after: // convert input to double :end-before: // calculate square root +.. raw:: html + + </details> + To complete ``TODO 5``, simply remove ``#include <cstdlib>``. We will need to explicitly state in the CMake code that it should use the @@ -225,6 +256,10 @@ the :variable:`CMAKE_CXX_STANDARD` variable in the ``CMakeLists.txt`` file to add the :variable:`CMAKE_CXX_STANDARD` declarations above the call to :command:`add_executable`. +.. raw:: html + + <details><summary>TODO 6: Click to show/hide answer</summary> + .. literalinclude:: Step2/CMakeLists.txt :caption: TODO 6: CMakeLists.txt :name: CMakeLists.txt-CXX_STANDARD @@ -232,6 +267,10 @@ add the :variable:`CMAKE_CXX_STANDARD` declarations above the call to :start-after: # specify the C++ standard :end-before: # configure a header file to pass some of the CMake settings +.. raw:: html + + </details> + Exercise 3 - Adding a Version Number and Configured Header File ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -309,6 +348,10 @@ First, we modify the ``CMakeLists.txt`` file to use the When the command:`project` command is called, CMake defines ``Tutorial_VERSION_MAJOR`` and ``Tutorial_VERSION_MINOR`` behind the scenes. +.. raw:: html + + <details><summary>TODO 7: Click to show/hide answer</summary> + .. literalinclude:: Step2/CMakeLists.txt :caption: TODO 7: CMakeLists.txt :name: CMakeLists.txt-project-VERSION @@ -316,9 +359,17 @@ When the command:`project` command is called, CMake defines :start-after: # set the project name and version :end-before: # specify the C++ standard +.. raw:: html + + </details> + Then we used :command:`configure_file` to copy the input file with the specified CMake variables replaced: +.. raw:: html + + <details><summary>TODO 8: Click to show/hide answer</summary> + .. literalinclude:: Step2/CMakeLists.txt :caption: TODO 8: CMakeLists.txt :name: CMakeLists.txt-configure_file @@ -326,6 +377,10 @@ specified CMake variables replaced: :start-after: # to the source code :end-before: # add the executable +.. raw:: html + + </details> + Since the configured file will be written into the project binary directory, we must add that directory to the list of paths to search for include files. @@ -337,37 +392,69 @@ meant to refer to a `bin/` directory. We used :command:`target_include_directories` to specify where the executable target should look for include files. +.. raw:: html + + <details><summary>TODO 9: Click to show/hide answer</summary> + .. literalinclude:: Step2/CMakeLists.txt :caption: TODO 9: CMakeLists.txt :name: CMakeLists.txt-target_include_directories :language: cmake :start-after: # so that we will find TutorialConfig.h +.. raw:: html + + </details> + ``TutorialConfig.h.in`` is the input header file to be configured. When :command:`configure_file` is called from our ``CMakeLists.txt``, the values for ``@Tutorial_VERSION_MAJOR@`` and ``@Tutorial_VERSION_MINOR@`` will be replaced with the corresponding version numbers from the project in ``TutorialConfig.h``. +.. raw:: html + + <details><summary>TODO 10: Click to show/hide answer</summary> + .. literalinclude:: Step2/TutorialConfig.h.in :caption: TODO 10: TutorialConfig.h.in :name: TutorialConfig.h.in :language: c++ +.. raw:: html + + </details> + Next, we need to modify ``tutorial.cxx`` to include the configured header file, ``TutorialConfig.h``. +.. raw:: html + + <details><summary>TODO 11: Click to show/hide answer</summary> + .. code-block:: c++ :caption: TODO 11: tutorial.cxx #include "TutorialConfig.h" +.. raw:: html + + </details> + Finally, we print out the executable name and version number by updating ``tutorial.cxx`` as follows: +.. raw:: html + + <details><summary>TODO 12: Click to show/hide answer</summary> + .. literalinclude:: Step2/tutorial.cxx :caption: TODO 12 : tutorial.cxx :name: tutorial.cxx-print-version :language: c++ :start-after: { :end-before: // convert input to double + +.. raw:: html + + </details> |