Przeglądaj źródła

Help: Modernize create_test_sourcelist documentation

Brad King 1 rok temu
rodzic
commit
c21f0eb30b
1 zmienionych plików z 54 dodań i 26 usunięć
  1. 54 26
      Help/command/create_test_sourcelist.rst

+ 54 - 26
Help/command/create_test_sourcelist.rst

@@ -1,29 +1,57 @@
 create_test_sourcelist
 create_test_sourcelist
 ----------------------
 ----------------------
 
 
-Create a test driver and source list for building test programs.
-
-.. code-block:: cmake
-
-  create_test_sourcelist(<sourceListName> <driverName>
-                         <tests> ...
-                         [EXTRA_INCLUDE <include>]
-                         [FUNCTION <function>])
-
-A test driver is a program that links together many small tests into a single
-executable.  This is useful when building static executables with large
-libraries to shrink the total required size.  The list of source files needed
-to build the test driver will be in ``sourceListName``.  ``driverName`` is the
-name of the test driver program. The rest of the arguments consist of a list
-of test source files and can be semicolon separated.  Each test source file
-should have a function in it that is the same name as the file with no
-extension (``foo.cxx`` should have ``int foo(int, char*[]);``). ``driverName``
-will be able to call each of the tests by name on the command line.  If
-``EXTRA_INCLUDE`` is specified, then the next argument is included into the
-generated file. If ``FUNCTION`` is specified, then the next argument is taken
-as a function name that is passed pointers to ``argc`` and ``argv``.  This can
-be used to add extra command line processing to each test.  The
-``CMAKE_TESTDRIVER_BEFORE_TESTMAIN`` cmake variable can be set to have code
-that will be placed directly before calling the test ``main`` function.
-``CMAKE_TESTDRIVER_AFTER_TESTMAIN`` can be set to have code that will be
-placed directly after the call to the test ``main`` function.
+Create a test driver program that links together many small tests into a
+single executable.  This is useful when building static executables with
+large libraries to shrink the total required size.
+
+.. signature::
+  create_test_sourcelist(<sourceListName> <driverName> <test>... <options>...)
+  :target: original
+
+  Generate a test driver source file from a list of individual test sources
+  and provide a combined list of sources that can be built as an executable.
+
+  The options are:
+
+  ``<sourceListName>``
+    The name of a variable in which to store the list of source files needed
+    to build the test driver.  The list will contain the ``<test>...`` sources
+    and the generated ``<driverName>`` source.
+
+  ``<driverName>``
+    Name of the test driver source file to be generated into the build tree.
+    The source file will contain a ``main()`` program entry point that
+    dispatches to whatever test is named on the command line.
+
+  ``<test>...``
+    Test source files to be added to the driver binary.  Each test source
+    file must have a function in it that is the same name as the file with the
+    extension removed.  For example, a ``foo.cxx`` test source might contain:
+
+    .. code-block:: c++
+
+      int foo(int argc, char** argv)
+
+  ``EXTRA_INCLUDE <header>``
+    Specify a header file to ``#include`` in the generated test driver source.
+
+  ``FUNCTION <function>``
+    Specify a function to be called with pointers to ``argc`` and ``argv``.
+    The function may be provided in the ``EXTRA_INCLUDE`` header:
+
+    .. code-block:: c++
+
+      void function(int* pargc, char*** pargv)
+
+    This can be used to add extra command line processing to each test.
+
+Additionally, some CMake variables affect test driver generation:
+
+.. variable:: CMAKE_TESTDRIVER_BEFORE_TESTMAIN
+
+  Code to be placed directly before calling each test's function.
+
+.. variable:: CMAKE_TESTDRIVER_AFTER_TESTMAIN
+
+  Code to be placed directly after the call to each test's function.