mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-21 14:40:26 -06:00
Tutorial: Clarify Steps 1, 2 and 3
This commit is contained in:
@@ -81,8 +81,8 @@ replaced.
|
||||
Next modify ``tutorial.cxx`` to include the configured header file,
|
||||
``TutorialConfig.h``.
|
||||
|
||||
Finally, let's print out the version number by updating ``tutorial.cxx`` as
|
||||
follows:
|
||||
Finally, let's print out the executable name and version number by updating
|
||||
``tutorial.cxx`` as follows:
|
||||
|
||||
.. literalinclude:: Step2/tutorial.cxx
|
||||
:language: c++
|
||||
@@ -106,7 +106,8 @@ correct flags. The easiest way to enable support for a specific C++ standard
|
||||
in CMake is by using the :variable:`CMAKE_CXX_STANDARD` variable. For this
|
||||
tutorial, set the :variable:`CMAKE_CXX_STANDARD` variable in the
|
||||
``CMakeLists.txt`` file to 11 and :variable:`CMAKE_CXX_STANDARD_REQUIRED` to
|
||||
True:
|
||||
True. Make sure to add the ``CMAKE_CXX_STANDARD`` declarations above the call
|
||||
to ``add_executable``.
|
||||
|
||||
.. literalinclude:: Step2/CMakeLists.txt
|
||||
:language: cmake
|
||||
@@ -120,18 +121,28 @@ Run the :manual:`cmake <cmake(1)>` executable or the
|
||||
with your chosen build tool.
|
||||
|
||||
For example, from the command line we could navigate to the
|
||||
``Help/guide/tutorial`` directory of the CMake source code tree and run the
|
||||
following commands:
|
||||
``Help/guide/tutorial`` directory of the CMake source code tree and create a
|
||||
build directory:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
mkdir Step1_build
|
||||
|
||||
Next, navigate to the build directory and run CMake to configure the project
|
||||
and generate a native build system:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
cd Step1_build
|
||||
cmake ../Step1
|
||||
|
||||
Then call that build system to actually compile/link the project:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
cmake --build .
|
||||
|
||||
Navigate to the directory where Tutorial was built (likely the make directory
|
||||
or a Debug or Release build configuration subdirectory) and run these commands:
|
||||
Finally, try to use the newly built ``Tutorial`` with these commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@@ -212,8 +223,9 @@ libraries to later be linked into the executable. The variable
|
||||
classic approach when dealing with many optional components, we will cover
|
||||
the modern approach in the next step.
|
||||
|
||||
The corresponding changes to the source code are fairly straightforward. First,
|
||||
in ``tutorial.cxx``, include the ``MathFunctions.h`` header if we need it:
|
||||
The corresponding changes to the source code are fairly straightforward.
|
||||
First, in ``tutorial.cxx``, include the ``MathFunctions.h`` header if we
|
||||
need it:
|
||||
|
||||
.. literalinclude:: Step3/tutorial.cxx
|
||||
:language: c++
|
||||
@@ -242,8 +254,17 @@ 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. Then run the built Tutorial executable.
|
||||
|
||||
Use the :manual:`ccmake <ccmake(1)>` executable or the :manual:`cmake-gui <cmake-gui(1)>`
|
||||
to update the value of ``USE_MYMATH``. Rebuild and run the tutorial again.
|
||||
Now let's update the value of ``USE_MYMATH``. The easiest way is to use the
|
||||
:manual:`cmake-gui <cmake-gui(1)>` or :manual:`ccmake <ccmake(1)>` if you're
|
||||
in the terminal. Or, alternatively, if you want to change the option from the
|
||||
command-line, try:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
cmake ../Step2 -DUSE_MYMATH=OFF
|
||||
|
||||
Rebuild and run the tutorial again.
|
||||
|
||||
Which function gives better results, sqrt or mysqrt?
|
||||
|
||||
Adding Usage Requirements for Library (Step 3)
|
||||
@@ -320,21 +341,32 @@ And to the end of the top-level ``CMakeLists.txt`` we add:
|
||||
|
||||
That is all that is needed to create a basic local install of the tutorial.
|
||||
|
||||
Run the :manual:`cmake <cmake(1)>` executable or the
|
||||
Now 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. Run the install step by using the ``install``
|
||||
option of the :manual:`cmake <cmake(1)>` command (introduced in 3.15, older
|
||||
versions of CMake must use ``make install``) from the command line, or build
|
||||
the ``INSTALL`` target from an IDE. This will install the appropriate header
|
||||
files, libraries, and executables.
|
||||
with your chosen build tool.
|
||||
|
||||
Then run the install step by using the ``install`` option of the
|
||||
:manual:`cmake <cmake(1)>` command (introduced in 3.15, older versions of
|
||||
CMake must use ``make install``) from the command line. For
|
||||
multi-configuration tools, don't forget to use the ``--config`` argument to
|
||||
specify the configuration. If using an IDE, simply build the ``INSTALL``
|
||||
target. This step will install the appropriate header files, libraries, and
|
||||
executables. For example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
cmake --install .
|
||||
|
||||
The CMake variable :variable:`CMAKE_INSTALL_PREFIX` is used to determine the
|
||||
root of where the files will be installed. If using ``cmake --install`` a
|
||||
custom installation directory can be given via the ``--prefix`` argument. For
|
||||
multi-configuration tools, use the ``--config`` argument to specify the
|
||||
configuration.
|
||||
root of where the files will be installed. If using the ``cmake --install``
|
||||
command, the installation prefix can be overidden via the ``--prefix``
|
||||
argument. For example:
|
||||
|
||||
Verify that the installed Tutorial runs.
|
||||
.. code-block:: console
|
||||
|
||||
cmake --install . --prefix "/home/myuser/installdir"
|
||||
|
||||
Navigate to the install directory and verify that the installed Tutorial runs.
|
||||
|
||||
Testing Support
|
||||
---------------
|
||||
@@ -750,7 +782,7 @@ A common usage of
|
||||
:manual:`generator expressions <cmake-generator-expressions(7)>` is to
|
||||
conditionally add compiler flags, such as those for language levels or
|
||||
warnings. A nice pattern is to associate this information to an ``INTERFACE``
|
||||
target allowing this information to propagate. Lets start by constructing an
|
||||
target allowing this information to propagate. Let's start by constructing an
|
||||
``INTERFACE`` target and specifying the required C++ standard level of ``11``
|
||||
instead of using :variable:`CMAKE_CXX_STANDARD`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user