Skip to content

Commit

Permalink
description about this lesson material
Browse files Browse the repository at this point in the history
  • Loading branch information
code4yonglei committed Sep 2, 2024
1 parent ef28fa6 commit dbd2a15
Showing 1 changed file with 70 additions and 13 deletions.
83 changes: 70 additions & 13 deletions content/index.rst
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
Introduction to CMake
===========
=====================


CMake is a language-agnostic, cross-platform build tool and is nowadays the *de facto* standard, with large projects using it to reliably build, test, and deploy their codebases.

CMake is not a build system itself, but it generates another system's build files.

In this workshop, you will learn

- Write a CMake build system for C/C++ and Fortran projects producing libraries and/or executables.
- Run tests for your code with `CTest`.
- Ensure your build system will work on different platforms.
Expand All @@ -22,47 +23,103 @@ In this workshop, you will learn
If you have access to a supercomputer (e.g. a `NAISS system <https://www.naiss.se/>`_) with a compute allocation you can use that during the workshop. Any questions on how to use a particular HPC resource should be directed to the appropriate support desk.

You can also use your own computer for this workshop, provided that it has the necessary tools installed.
- If you do not already have these installed, we recommend that you set up an isolated software environment using ``conda``.
- For Windows computers we recommend to use the ``Windows Subsystem for Linux (WSL)``. Detailed instructions can be found
on the :doc:`setup` page.

- If you do not already have these installed, we recommend that you set up an isolated software environment using ``conda``.
- For Windows computers we recommend to use the **Windows Subsystem for Linux (WSL)**. Detailed instructions can be found on the :doc:`setup` page.


.. toctree::

Check warning on line 31 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'setup'

Check warning on line 31 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'setup'

Check warning on line 31 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'setup'
:hidden:
:maxdepth: 1

setup


.. csv-table::
:widths: auto
:delim: ;
.. toctree::

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'hello-cmake'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'cmake-syntax'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'hello-ctest'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'probing'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'targets'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. dependencies'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. fetch-content'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. python-bindings'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'tips-and-tricks'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'hello-cmake'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'cmake-syntax'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'hello-ctest'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'probing'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'targets'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. dependencies'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. fetch-content'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. python-bindings'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'tips-and-tricks'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'hello-cmake'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'cmake-syntax'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'hello-ctest'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'probing'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'targets'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. dependencies'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. fetch-content'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document '.. python-bindings'

Check warning on line 38 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

toctree contains reference to nonexisting document 'tips-and-tricks'
:hidden:
:maxdepth: 1
:caption: The lesson

20 min ; :doc:`filename`
hello-cmake
cmake-syntax
hello-ctest
probing
targets
.. dependencies
.. fetch-content
.. python-bindings
tips-and-tricks


.. toctree::
:hidden:
:maxdepth: 1
:caption: The lesson
:caption: Additional topics

.. environment
.. cxx-fortran


.. csv-table::
:widths: auto
:delim: ;

30 min ; :doc:`hello-cmake`
40 min ; :doc:`cmake-syntax`
40 min ; :doc:`hello-ctest`
40 min ; :doc:`probing`
40 min ; :doc:`targets`
.. 30 min ; :doc:`dependencies`
.. 40 min ; :doc:`fetch-content`
.. 35 min ; :doc:`python-bindings`
20 min ; :doc:`tips-and-tricks`


.. toctree::
:maxdepth: 1
:caption: Reference

quick-reference
guide
.. quick-reference
.. zbibliography
.. guide



.. _learner-personas:


Who is the course for?
----------------------

This course is for students, researchers, engineers, and programmers that have heard of `CMake`_ and want to learn how to use it effectively with projects they are working on.

Check failure on line 94 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

Unknown target name: "cmake".

Check failure on line 94 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

Unknown target name: "cmake".

Check failure on line 94 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

Unknown target name: "cmake".

Check failure on line 94 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

Unknown target name: "cmake".

Check failure on line 94 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

Unknown target name: "cmake".

Check failure on line 94 in content/index.rst

View workflow job for this annotation

GitHub Actions / Build

Unknown target name: "cmake".
This course assumes no previous experience with `CMake`_. You will have to be familiar with the tools commonly used to build software in your compiled language of choice (C/C++ or Fortran)0.

Specifically, this lesson assumes that participants have some prior experience with or knowledge of the following topics (but no expertise is required):

- Compiling and linking executables and libraries.
- Differences between shared and static libraries.
- Automated testing.


About this course
-----------------

This lesson material is originally developed by the `EuroCC National Competence Center
Sweden (ENCCS) <https://enccs.se/>`_ and taught in the `CMake Workshop <https://enccs.github.io/cmake-workshop/>`.
Each lesson episode has clearly defined learning objectives and includes multiple exercises along with solutions, and is therefore also useful for self-learning.

This material `Introduction to CMake <https://enccs.github.io/intro-cmake/>` was adapted from the material used for `CMake Workshop <https://enccs.github.io/cmake-workshop/>` and will be use for the `Build Systems Course and Hackathon <https://enccs.se/events/build-systems-course-and-hackathon-2024/>`.

The lesson material is licensed under `CC-BY-4.0 <https://creativecommons.org/licenses/by/4.0/>`_ and can be reused in any form (with appropriate credit) in other courses and workshops. Instructors who wish to teach this lesson can refer to the :doc:`guide` for practical advice.









About the course
----------------



Expand Down

0 comments on commit dbd2a15

Please sign in to comment.