mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-15 12:16:40 +08:00
Tutorial: Add captions for code blocks
This commit is contained in:

committed by
Brad King

parent
fe60154fe8
commit
9e5bbb69ea
@@ -7,6 +7,7 @@ required. This will be the starting point for our tutorial. Create a
|
|||||||
``CMakeLists.txt`` file in the ``Step1`` directory that looks like:
|
``CMakeLists.txt`` file in the ``Step1`` directory that looks like:
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
:caption: CMakeLists.txt
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.10)
|
cmake_minimum_required(VERSION 3.10)
|
||||||
|
|
||||||
@@ -33,6 +34,7 @@ First, modify the ``CMakeLists.txt`` file to use the :command:`project` command
|
|||||||
to set the project name and version number.
|
to set the project name and version number.
|
||||||
|
|
||||||
.. literalinclude:: Step2/CMakeLists.txt
|
.. literalinclude:: Step2/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:end-before: # specify the C++ standard
|
:end-before: # specify the C++ standard
|
||||||
|
|
||||||
@@ -40,6 +42,7 @@ Then, configure a header file to pass the version number to the source
|
|||||||
code:
|
code:
|
||||||
|
|
||||||
.. literalinclude:: Step2/CMakeLists.txt
|
.. literalinclude:: Step2/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # to the source code
|
:start-after: # to the source code
|
||||||
:end-before: # add the executable
|
:end-before: # add the executable
|
||||||
@@ -49,6 +52,7 @@ must add that directory to the list of paths to search for include
|
|||||||
files. Add the following lines to the end of the ``CMakeLists.txt`` file:
|
files. Add the following lines to the end of the ``CMakeLists.txt`` file:
|
||||||
|
|
||||||
.. literalinclude:: Step2/CMakeLists.txt
|
.. literalinclude:: Step2/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # so that we will find TutorialConfig.h
|
:start-after: # so that we will find TutorialConfig.h
|
||||||
|
|
||||||
@@ -56,6 +60,7 @@ Using your favorite editor, create ``TutorialConfig.h.in`` in the source
|
|||||||
directory with the following contents:
|
directory with the following contents:
|
||||||
|
|
||||||
.. literalinclude:: Step2/TutorialConfig.h.in
|
.. literalinclude:: Step2/TutorialConfig.h.in
|
||||||
|
:caption: TutorialConfig.h.in
|
||||||
:language: c++
|
:language: c++
|
||||||
|
|
||||||
When CMake configures this header file the values for
|
When CMake configures this header file the values for
|
||||||
@@ -69,6 +74,7 @@ Finally, let's print out the executable name and version number by updating
|
|||||||
``tutorial.cxx`` as follows:
|
``tutorial.cxx`` as follows:
|
||||||
|
|
||||||
.. literalinclude:: Step2/tutorial.cxx
|
.. literalinclude:: Step2/tutorial.cxx
|
||||||
|
:caption: tutorial.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
:start-after: {
|
:start-after: {
|
||||||
:end-before: // convert input to double
|
:end-before: // convert input to double
|
||||||
@@ -81,6 +87,7 @@ Next let's add some C++11 features to our project by replacing ``atof`` with
|
|||||||
``#include <cstdlib>``.
|
``#include <cstdlib>``.
|
||||||
|
|
||||||
.. literalinclude:: Step2/tutorial.cxx
|
.. literalinclude:: Step2/tutorial.cxx
|
||||||
|
:caption: tutorial.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
:start-after: // convert input to double
|
:start-after: // convert input to double
|
||||||
:end-before: // calculate square root
|
:end-before: // calculate square root
|
||||||
@@ -94,6 +101,7 @@ to ``True``. Make sure to add the ``CMAKE_CXX_STANDARD`` declarations above the
|
|||||||
call to ``add_executable``.
|
call to ``add_executable``.
|
||||||
|
|
||||||
.. literalinclude:: Step2/CMakeLists.txt
|
.. literalinclude:: Step2/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:end-before: # configure a header file to pass some of the CMake settings
|
:end-before: # configure a header file to pass some of the CMake settings
|
||||||
|
|
||||||
|
@@ -18,6 +18,7 @@ explicitly ``EXPORT`` the ``MathFunctions`` library by updating the ``install``
|
|||||||
command in ``MathFunctions/CMakeLists.txt`` to look like:
|
command in ``MathFunctions/CMakeLists.txt`` to look like:
|
||||||
|
|
||||||
.. literalinclude:: Complete/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Complete/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # install rules
|
:start-after: # install rules
|
||||||
|
|
||||||
@@ -26,6 +27,7 @@ install the generated ``MathFunctionsTargets.cmake`` file. This is done by
|
|||||||
adding the following to the bottom of the top-level ``CMakeLists.txt``:
|
adding the following to the bottom of the top-level ``CMakeLists.txt``:
|
||||||
|
|
||||||
.. literalinclude:: Complete/CMakeLists.txt
|
.. literalinclude:: Complete/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # install the configuration targets
|
:start-after: # install the configuration targets
|
||||||
:end-before: include(CMakePackageConfigHelpers)
|
:end-before: include(CMakePackageConfigHelpers)
|
||||||
@@ -51,6 +53,7 @@ directory and from an install / package. This means converting the
|
|||||||
:command:`target_include_directories` call for ``MathFunctions`` to look like:
|
:command:`target_include_directories` call for ``MathFunctions`` to look like:
|
||||||
|
|
||||||
.. literalinclude:: Step12/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step12/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # to find MathFunctions.h, while we don't.
|
:start-after: # to find MathFunctions.h, while we don't.
|
||||||
:end-before: # should we use our own math functions
|
:end-before: # should we use our own math functions
|
||||||
@@ -65,11 +68,13 @@ ahead and add a new file to the top-level of the project called
|
|||||||
``Config.cmake.in`` with the following contents:
|
``Config.cmake.in`` with the following contents:
|
||||||
|
|
||||||
.. literalinclude:: Step12/Config.cmake.in
|
.. literalinclude:: Step12/Config.cmake.in
|
||||||
|
:caption: Config.cmake.in
|
||||||
|
|
||||||
Then, to properly configure and install that file, add the following to the
|
Then, to properly configure and install that file, add the following to the
|
||||||
bottom of the top-level ``CMakeLists.txt``:
|
bottom of the top-level ``CMakeLists.txt``:
|
||||||
|
|
||||||
.. literalinclude:: Step12/CMakeLists.txt
|
.. literalinclude:: Step12/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # install the configuration targets
|
:start-after: # install the configuration targets
|
||||||
:end-before: # generate the export
|
:end-before: # generate the export
|
||||||
@@ -80,6 +85,7 @@ we want our project to also be used from a build directory we only have to add
|
|||||||
the following to the bottom of the top level ``CMakeLists.txt``:
|
the following to the bottom of the top level ``CMakeLists.txt``:
|
||||||
|
|
||||||
.. literalinclude:: Step12/CMakeLists.txt
|
.. literalinclude:: Step12/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # needs to be after the install(TARGETS ) command
|
:start-after: # needs to be after the install(TARGETS ) command
|
||||||
|
|
||||||
|
@@ -38,6 +38,7 @@ instead of using :variable:`CMAKE_CXX_STANDARD`.
|
|||||||
So the following code:
|
So the following code:
|
||||||
|
|
||||||
.. literalinclude:: Step10/CMakeLists.txt
|
.. literalinclude:: Step10/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: project(Tutorial VERSION 1.0)
|
:start-after: project(Tutorial VERSION 1.0)
|
||||||
:end-before: # control where the static and shared libraries are built so that on windows
|
:end-before: # control where the static and shared libraries are built so that on windows
|
||||||
@@ -45,6 +46,7 @@ So the following code:
|
|||||||
Would be replaced with:
|
Would be replaced with:
|
||||||
|
|
||||||
.. literalinclude:: Step11/CMakeLists.txt
|
.. literalinclude:: Step11/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: project(Tutorial VERSION 1.0)
|
:start-after: project(Tutorial VERSION 1.0)
|
||||||
:end-before: # add compiler warning flags just when building this project via
|
:end-before: # add compiler warning flags just when building this project via
|
||||||
@@ -56,6 +58,7 @@ generator expression to control which flags to apply given a language and a set
|
|||||||
of compiler ids as seen below:
|
of compiler ids as seen below:
|
||||||
|
|
||||||
.. literalinclude:: Step11/CMakeLists.txt
|
.. literalinclude:: Step11/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # the BUILD_INTERFACE genex
|
:start-after: # the BUILD_INTERFACE genex
|
||||||
:end-before: # control where the static and shared libraries are built so that on windows
|
:end-before: # control where the static and shared libraries are built so that on windows
|
||||||
|
@@ -10,6 +10,7 @@ we include the :module:`CTest` module in our top-level ``CMakeLists.txt``.
|
|||||||
Replace:
|
Replace:
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
:caption: CMakeLists.txt
|
||||||
|
|
||||||
# enable testing
|
# enable testing
|
||||||
enable_testing()
|
enable_testing()
|
||||||
@@ -17,6 +18,7 @@ Replace:
|
|||||||
With:
|
With:
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
:caption: CMakeLists.txt
|
||||||
|
|
||||||
# enable dashboard scripting
|
# enable dashboard scripting
|
||||||
include(CTest)
|
include(CTest)
|
||||||
@@ -29,6 +31,7 @@ directory where we can specify the name of the project and where to submit the
|
|||||||
dashboard.
|
dashboard.
|
||||||
|
|
||||||
.. literalinclude:: Step9/CTestConfig.cmake
|
.. literalinclude:: Step9/CTestConfig.cmake
|
||||||
|
:caption: CTestConfig.cmake
|
||||||
:language: cmake
|
:language: cmake
|
||||||
|
|
||||||
The :manual:`ctest <ctest(1)>` executable will read in this file when it runs.
|
The :manual:`ctest <ctest(1)>` executable will read in this file when it runs.
|
||||||
|
@@ -15,6 +15,7 @@ the ``m`` library. If ``log`` and ``exp`` are not initially found, require the
|
|||||||
``m`` library and try again.
|
``m`` library and try again.
|
||||||
|
|
||||||
.. literalinclude:: Step6/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step6/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # does this system provide the log and exp functions?
|
:start-after: # does this system provide the log and exp functions?
|
||||||
:end-before: # add compile definitions
|
:end-before: # add compile definitions
|
||||||
@@ -23,6 +24,7 @@ If available, use :command:`target_compile_definitions` to specify
|
|||||||
``HAVE_LOG`` and ``HAVE_EXP`` as ``PRIVATE`` compile definitions.
|
``HAVE_LOG`` and ``HAVE_EXP`` as ``PRIVATE`` compile definitions.
|
||||||
|
|
||||||
.. literalinclude:: Step6/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step6/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # add compile definitions
|
:start-after: # add compile definitions
|
||||||
:end-before: # install rules
|
:end-before: # install rules
|
||||||
@@ -33,6 +35,7 @@ the ``mysqrt`` function in ``MathFunctions/mysqrt.cxx`` (don't forget the
|
|||||||
``#endif`` before returning the result!):
|
``#endif`` before returning the result!):
|
||||||
|
|
||||||
.. literalinclude:: Step6/MathFunctions/mysqrt.cxx
|
.. literalinclude:: Step6/MathFunctions/mysqrt.cxx
|
||||||
|
:caption: MathFunctions/mysqrt.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
:start-after: // if we have both log and exp then use them
|
:start-after: // if we have both log and exp then use them
|
||||||
:end-before: // do ten iterations
|
:end-before: // do ten iterations
|
||||||
@@ -40,6 +43,7 @@ the ``mysqrt`` function in ``MathFunctions/mysqrt.cxx`` (don't forget the
|
|||||||
We will also need to modify ``mysqrt.cxx`` to include ``cmath``.
|
We will also need to modify ``mysqrt.cxx`` to include ``cmath``.
|
||||||
|
|
||||||
.. literalinclude:: Step6/MathFunctions/mysqrt.cxx
|
.. literalinclude:: Step6/MathFunctions/mysqrt.cxx
|
||||||
|
:caption: MathFunctions/mysqrt.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
:end-before: #include <iostream>
|
:end-before: #include <iostream>
|
||||||
|
|
||||||
|
@@ -22,6 +22,7 @@ doesn't. Add the following lines to the end of
|
|||||||
``MathFunctions/CMakeLists.txt``:
|
``MathFunctions/CMakeLists.txt``:
|
||||||
|
|
||||||
.. literalinclude:: Step4/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step4/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # to find MathFunctions.h
|
:start-after: # to find MathFunctions.h
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ remove our uses of the ``EXTRA_INCLUDES`` variable from the top-level
|
|||||||
``CMakeLists.txt``, here:
|
``CMakeLists.txt``, here:
|
||||||
|
|
||||||
.. literalinclude:: Step4/CMakeLists.txt
|
.. literalinclude:: Step4/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # add the MathFunctions library
|
:start-after: # add the MathFunctions library
|
||||||
:end-before: # add the executable
|
:end-before: # add the executable
|
||||||
@@ -37,6 +39,7 @@ remove our uses of the ``EXTRA_INCLUDES`` variable from the top-level
|
|||||||
And here:
|
And here:
|
||||||
|
|
||||||
.. literalinclude:: Step4/CMakeLists.txt
|
.. literalinclude:: Step4/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # so that we will find TutorialConfig.h
|
:start-after: # so that we will find TutorialConfig.h
|
||||||
|
|
||||||
|
@@ -27,6 +27,7 @@ First, at the top of ``MathFunctions/CMakeLists.txt``, the executable for
|
|||||||
``MakeTable`` is added as any other executable would be added.
|
``MakeTable`` is added as any other executable would be added.
|
||||||
|
|
||||||
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # first we add the executable that generates the table
|
:start-after: # first we add the executable that generates the table
|
||||||
:end-before: # add the command to generate the source code
|
:end-before: # add the command to generate the source code
|
||||||
@@ -35,6 +36,7 @@ Then we add a custom command that specifies how to produce ``Table.h``
|
|||||||
by running MakeTable.
|
by running MakeTable.
|
||||||
|
|
||||||
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # add the command to generate the source code
|
:start-after: # add the command to generate the source code
|
||||||
:end-before: # add the main library
|
:end-before: # add the main library
|
||||||
@@ -44,6 +46,7 @@ file ``Table.h``. This is done by adding the generated ``Table.h`` to the list
|
|||||||
of sources for the library MathFunctions.
|
of sources for the library MathFunctions.
|
||||||
|
|
||||||
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # add the main library
|
:start-after: # add the main library
|
||||||
:end-before: # state that anybody linking
|
:end-before: # state that anybody linking
|
||||||
@@ -52,6 +55,7 @@ We also have to add the current binary directory to the list of include
|
|||||||
directories so that ``Table.h`` can be found and included by ``mysqrt.cxx``.
|
directories so that ``Table.h`` can be found and included by ``mysqrt.cxx``.
|
||||||
|
|
||||||
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step7/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # state that we depend on our bin
|
:start-after: # state that we depend on our bin
|
||||||
:end-before: # install rules
|
:end-before: # install rules
|
||||||
@@ -60,6 +64,7 @@ Now let's use the generated table. First, modify ``mysqrt.cxx`` to include
|
|||||||
``Table.h``. Next, we can rewrite the ``mysqrt`` function to use the table:
|
``Table.h``. Next, we can rewrite the ``mysqrt`` function to use the table:
|
||||||
|
|
||||||
.. literalinclude:: Step7/MathFunctions/mysqrt.cxx
|
.. literalinclude:: Step7/MathFunctions/mysqrt.cxx
|
||||||
|
:caption: MathFunctions/mysqrt.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
:start-after: // a hack square root calculation using simple operations
|
:start-after: // a hack square root calculation using simple operations
|
||||||
|
|
||||||
|
@@ -16,6 +16,7 @@ Add the following one line ``CMakeLists.txt`` file to the ``MathFunctions``
|
|||||||
directory:
|
directory:
|
||||||
|
|
||||||
.. literalinclude:: Step3/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step3/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
|
|
||||||
To make use of the new library we will add an :command:`add_subdirectory`
|
To make use of the new library we will add an :command:`add_subdirectory`
|
||||||
@@ -25,6 +26,7 @@ an include directory so that the ``mysqrt.h`` header file can be found. The
|
|||||||
last few lines of the top-level ``CMakeLists.txt`` file should now look like:
|
last few lines of the top-level ``CMakeLists.txt`` file should now look like:
|
||||||
|
|
||||||
.. code-block:: cmake
|
.. code-block:: cmake
|
||||||
|
:caption: CMakeLists.txt
|
||||||
|
|
||||||
# add the MathFunctions library
|
# add the MathFunctions library
|
||||||
add_subdirectory(MathFunctions)
|
add_subdirectory(MathFunctions)
|
||||||
@@ -47,6 +49,7 @@ occurrence. The first step is to add an option to the top-level
|
|||||||
``CMakeLists.txt`` file.
|
``CMakeLists.txt`` file.
|
||||||
|
|
||||||
.. literalinclude:: Step3/CMakeLists.txt
|
.. literalinclude:: Step3/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # should we use our own math functions
|
:start-after: # should we use our own math functions
|
||||||
:end-before: # add the MathFunctions library
|
:end-before: # add the MathFunctions library
|
||||||
@@ -62,6 +65,7 @@ conditional. To do this we change the end of the top-level ``CMakeLists.txt``
|
|||||||
file to look like the following:
|
file to look like the following:
|
||||||
|
|
||||||
.. literalinclude:: Step3/CMakeLists.txt
|
.. literalinclude:: Step3/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # add the MathFunctions library
|
:start-after: # add the MathFunctions library
|
||||||
|
|
||||||
@@ -76,6 +80,7 @@ First, in ``tutorial.cxx``, include the ``MathFunctions.h`` header if we
|
|||||||
need it:
|
need it:
|
||||||
|
|
||||||
.. literalinclude:: Step3/tutorial.cxx
|
.. literalinclude:: Step3/tutorial.cxx
|
||||||
|
:caption: tutorial.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
:start-after: // should we include the MathFunctions header
|
:start-after: // should we include the MathFunctions header
|
||||||
:end-before: int main
|
:end-before: int main
|
||||||
@@ -84,6 +89,7 @@ Then, in the same file, make ``USE_MYMATH`` control which square root
|
|||||||
function is used:
|
function is used:
|
||||||
|
|
||||||
.. literalinclude:: Step3/tutorial.cxx
|
.. literalinclude:: Step3/tutorial.cxx
|
||||||
|
:caption: tutorial.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
:start-after: // which square root function should we use?
|
:start-after: // which square root function should we use?
|
||||||
:end-before: std::cout << "The square root of
|
:end-before: std::cout << "The square root of
|
||||||
@@ -92,6 +98,7 @@ Since the source code now requires ``USE_MYMATH`` we can add it to
|
|||||||
``TutorialConfig.h.in`` with the following line:
|
``TutorialConfig.h.in`` with the following line:
|
||||||
|
|
||||||
.. literalinclude:: Step3/TutorialConfig.h.in
|
.. literalinclude:: Step3/TutorialConfig.h.in
|
||||||
|
:caption: TutorialConfig.h.in
|
||||||
:language: c++
|
:language: c++
|
||||||
:lines: 4
|
:lines: 4
|
||||||
|
|
||||||
|
@@ -13,12 +13,14 @@ executable and configured header.
|
|||||||
So to the end of ``MathFunctions/CMakeLists.txt`` we add:
|
So to the end of ``MathFunctions/CMakeLists.txt`` we add:
|
||||||
|
|
||||||
.. literalinclude:: Step5/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step5/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # install rules
|
:start-after: # install rules
|
||||||
|
|
||||||
And to the end of the top-level ``CMakeLists.txt`` we add:
|
And to the end of the top-level ``CMakeLists.txt`` we add:
|
||||||
|
|
||||||
.. literalinclude:: Step5/CMakeLists.txt
|
.. literalinclude:: Step5/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # add the install targets
|
:start-after: # add the install targets
|
||||||
:end-before: # enable testing
|
:end-before: # enable testing
|
||||||
@@ -62,6 +64,7 @@ file we can enable testing and then add a number of basic tests to verify that
|
|||||||
the application is working correctly.
|
the application is working correctly.
|
||||||
|
|
||||||
.. literalinclude:: Step5/CMakeLists.txt
|
.. literalinclude:: Step5/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # enable testing
|
:start-after: # enable testing
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@ Set :variable:`CMAKE_DEBUG_POSTFIX` near the beginning of the top-level
|
|||||||
``CMakeLists.txt`` file:
|
``CMakeLists.txt`` file:
|
||||||
|
|
||||||
.. literalinclude:: Complete/CMakeLists.txt
|
.. literalinclude:: Complete/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: project(Tutorial VERSION 1.0)
|
:start-after: project(Tutorial VERSION 1.0)
|
||||||
:end-before: target_compile_features(tutorial_compiler_flags
|
:end-before: target_compile_features(tutorial_compiler_flags
|
||||||
@@ -24,6 +25,7 @@ Set :variable:`CMAKE_DEBUG_POSTFIX` near the beginning of the top-level
|
|||||||
And the :prop_tgt:`DEBUG_POSTFIX` property on the tutorial executable:
|
And the :prop_tgt:`DEBUG_POSTFIX` property on the tutorial executable:
|
||||||
|
|
||||||
.. literalinclude:: Complete/CMakeLists.txt
|
.. literalinclude:: Complete/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # add the executable
|
:start-after: # add the executable
|
||||||
:end-before: # add the binary tree to the search path for include files
|
:end-before: # add the binary tree to the search path for include files
|
||||||
@@ -33,6 +35,7 @@ Let's also add version numbering to the ``MathFunctions`` library. In
|
|||||||
:prop_tgt:`SOVERSION` properties:
|
:prop_tgt:`SOVERSION` properties:
|
||||||
|
|
||||||
.. literalinclude:: Complete/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Complete/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # setup the version numbering
|
:start-after: # setup the version numbering
|
||||||
:end-before: # install rules
|
:end-before: # install rules
|
||||||
@@ -68,6 +71,7 @@ Next, use the ``CPACK_INSTALL_CMAKE_PROJECTS`` variable to specify which
|
|||||||
projects to install. In this case, we want to install both debug and release.
|
projects to install. In this case, we want to install both debug and release.
|
||||||
|
|
||||||
.. literalinclude:: Complete/MultiCPackConfig.cmake
|
.. literalinclude:: Complete/MultiCPackConfig.cmake
|
||||||
|
:caption: MultiCPackConfig.cmake
|
||||||
:language: cmake
|
:language: cmake
|
||||||
|
|
||||||
From the ``Step12`` directory, run :manual:`cpack <cpack(1)>` specifying our
|
From the ``Step12`` directory, run :manual:`cpack <cpack(1)>` specifying our
|
||||||
|
@@ -12,6 +12,7 @@ CPack to create platform specific installers. Specifically we need to add a
|
|||||||
few lines to the bottom of our top-level ``CMakeLists.txt`` file.
|
few lines to the bottom of our top-level ``CMakeLists.txt`` file.
|
||||||
|
|
||||||
.. literalinclude:: Step8/CMakeLists.txt
|
.. literalinclude:: Step8/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:start-after: # setup installer
|
:start-after: # setup installer
|
||||||
|
|
||||||
|
@@ -20,6 +20,7 @@ The first step is to update the starting section of the top-level
|
|||||||
``CMakeLists.txt`` to look like:
|
``CMakeLists.txt`` to look like:
|
||||||
|
|
||||||
.. literalinclude:: Step10/CMakeLists.txt
|
.. literalinclude:: Step10/CMakeLists.txt
|
||||||
|
:caption: CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:end-before: # add the binary tree
|
:end-before: # add the binary tree
|
||||||
|
|
||||||
@@ -32,6 +33,7 @@ explicitly require that SqrtLibrary is built statically.
|
|||||||
The end result is that ``MathFunctions/CMakeLists.txt`` should look like:
|
The end result is that ``MathFunctions/CMakeLists.txt`` should look like:
|
||||||
|
|
||||||
.. literalinclude:: Step10/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step10/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:lines: 1-36,42-
|
:lines: 1-36,42-
|
||||||
|
|
||||||
@@ -39,6 +41,7 @@ Next, update ``MathFunctions/mysqrt.cxx`` to use the ``mathfunctions`` and
|
|||||||
``detail`` namespaces:
|
``detail`` namespaces:
|
||||||
|
|
||||||
.. literalinclude:: Step10/MathFunctions/mysqrt.cxx
|
.. literalinclude:: Step10/MathFunctions/mysqrt.cxx
|
||||||
|
:caption: MathFunctions/mysqrt.cxx
|
||||||
:language: c++
|
:language: c++
|
||||||
|
|
||||||
We also need to make some changes in ``tutorial.cxx``, so that it no longer
|
We also need to make some changes in ``tutorial.cxx``, so that it no longer
|
||||||
@@ -51,6 +54,7 @@ uses ``USE_MYMATH``:
|
|||||||
Finally, update ``MathFunctions/MathFunctions.h`` to use dll export defines:
|
Finally, update ``MathFunctions/MathFunctions.h`` to use dll export defines:
|
||||||
|
|
||||||
.. literalinclude:: Step10/MathFunctions/MathFunctions.h
|
.. literalinclude:: Step10/MathFunctions/MathFunctions.h
|
||||||
|
:caption: MathFunctions/MathFunctions.h
|
||||||
:language: c++
|
:language: c++
|
||||||
|
|
||||||
At this point, if you build everything, you may notice that linking fails
|
At this point, if you build everything, you may notice that linking fails
|
||||||
@@ -60,6 +64,7 @@ explicitly set the :prop_tgt:`POSITION_INDEPENDENT_CODE` target property of
|
|||||||
SqrtLibrary to be ``True`` no matter the build type.
|
SqrtLibrary to be ``True`` no matter the build type.
|
||||||
|
|
||||||
.. literalinclude:: Step10/MathFunctions/CMakeLists.txt
|
.. literalinclude:: Step10/MathFunctions/CMakeLists.txt
|
||||||
|
:caption: MathFunctions/CMakeLists.txt
|
||||||
:language: cmake
|
:language: cmake
|
||||||
:lines: 37-42
|
:lines: 37-42
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user