home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CM100TXT.ARJ / CM100TXT.ZIP / CMAKE.TXT
Encoding:
Text File  |  1991-11-17  |  316.7 KB  |  9,224 lines

  1.                           CMAKE 1.00 MANUAL
  2.  
  3.  
  4. ─────CMAKE 1.00 Contents────────────────────────────────────────────────────
  5.  
  6.      Introduction                     Samples
  7.  
  8.      Getting Started                  Errors
  9.  
  10.      The Command Line
  11.  
  12.      The Make File
  13.  
  14.      The Configuration File
  15.  
  16.      Using CMAKE with Your Editor
  17.  
  18.      Optimizing Performance
  19.  
  20.      Exit Codes
  21.  
  22.      Technical Support                Copyright and Trademarks
  23.  
  24. ─────Introduction to CMAKE──────────────────────────────────────────────────
  25.  
  26.      CMAKE is a program maintenance utility designed especially for the
  27.      Microsoft(R) C and Microsoft Windows(TM) programmer.  CMAKE is
  28.      like a generic make facility in that it processes a make file in
  29.      order to determine which commands need to be executed to renew a
  30.      given program that is under development.  However, the make file
  31.      for CMAKE is much simpler than that of a generic make utility.
  32.      For most cases, user-supplied dependencies are not required.
  33.      CMAKE will automatically determine which commands are required by
  34.      deducing all dependencies directly from the commands themselves.
  35.  
  36.      Despite the fact that CMAKE must determine all dependencies for
  37.      you, CMAKE executes faster than most generic make utilities
  38.      running on a make file in which all dependencies have been
  39.      explicitly specified.
  40.  
  41.      CMAKE currently supports the following commands: CL, LIB, LINK,
  42.      MASM, RC, COPY, SET and REM.  The user may expand this list by
  43.      defining additional commands in the CMAKE configuration file.
  44.  
  45.      CMAKE is a shareware program, written and maintained by John
  46.      Greschak.  To become a registered user of CMAKE, send $25 to:
  47.  
  48.           John Greschak
  49.           50 West 34th St. Apt. 14B8
  50.           NY, NY 10001
  51.  
  52.      CMAKE was designed to run under MS-DOS(R).
  53.  
  54. ─────Getting Started with CMAKE─────────────────────────────────────────────
  55.  
  56.      Creating a Make File
  57.  
  58.      Running CMAKE
  59.  
  60.      Interpreting the Output of CMAKE
  61.  
  62.      Error Messages
  63.  
  64.      How CMAKE Works
  65.  
  66. ─────Creating a Make File for CMAKE─────────────────────────────────────────
  67.  
  68.      Study the samples that have been included with CMAKE.  Hopefully,
  69.      one of these sample programs may serve as a template for your make
  70.      file.
  71.  
  72.      See: Samples
  73.  
  74.      If you stray from the style of the samples, you might have some
  75.      difficulty because CMAKE does not recognize all possible command-
  76.      line formats for each command.  For example, CMAKE requires that
  77.      you use a response file with the commands, LIB and LINK.  To
  78.      guarantee success, you should become familiar with the
  79.      restrictions that CMAKE imposes on the commands that you will be
  80.      using in your make files.
  81.  
  82.      See: Command-Line Restrictions
  83.  
  84.           CL
  85.           COPY
  86.           LIB
  87.           LINK
  88.           MASM
  89.           RC/A
  90.           RC/C
  91.           RC/W
  92.  
  93. ─────Running CMAKE──────────────────────────────────────────────────────────
  94.  
  95.      Once you have created a make file, you will be ready to execute
  96.      CMAKE.  To do this, enter the command:
  97.  
  98.      CMAKE /n make_file_name
  99.  
  100.      Alternatively, if your make file is named "makefile" and you
  101.      are in your make-file's directory, you may omit the make-file
  102.      name and enter the command:
  103.  
  104.      CMAKE /n
  105.  
  106.      The /n option will prevent CMAKE from executing any commands
  107.      from the make file.  You should continue to use the /n option
  108.      until CMAKE does not generate any error messages.
  109.  
  110.      See: Error Messages
  111.  
  112.      Once you have eliminated all CMAKE error messages, remove the /n
  113.      option and execute CMAKE again.  This time CMAKE will execute all
  114.      of the commands that are necessary to update your application.
  115.  
  116.      See: Interpreting the Output of CMAKE
  117.  
  118.      At this point, you should perform some simple tests to ensure that
  119.      CMAKE will generate the correct list of required commands when you
  120.      modify one of your source files.  (There are utility programs
  121.      available that may be used to modify the time stamp of a given
  122.      file.  A program such as this, which is usually called "touch",
  123.      provides an efficient way to modify your source files.)  Modify
  124.      one of your source files, execute CMAKE, and check to be sure that
  125.      your application has been properly updated.  Repeat this process
  126.      for different source files.
  127.  
  128.      If you are having difficulty in understanding why CMAKE is not
  129.      updating your application properly, you might gain more insight
  130.      into the cause of the problem by adding the /v option to the
  131.      CMAKE command line.  For example, you could use the command:
  132.  
  133.      CMAKE /n /v make_file_name
  134.  
  135.      The use of the /v option will cause CMAKE to generate a verbose
  136.      description of its activity.  This description contains detailed
  137.      information concerning the processing of the make file and the
  138.      configuration file (if you are using one).  With the /v option,
  139.      CMAKE will list all of the time stamp comparisons that it performs
  140.      in route to determining which commands in the make file are
  141.      required.
  142.  
  143.      While you are debugging your make file, you might find it helpful
  144.      to review the batch program, "makefile.bat", that CMAKE creates
  145.      and executes.  (Note that when the /n option is used,
  146.      "makefile.bat" is created but not executed.)
  147.  
  148.      Finally, you may wish to collect the output of CMAKE in a file and
  149.      then review that file in you editor.  To do this, you may use the
  150.      MS-DOS redirection character, '>'.  For example, the following
  151.      command could be used to redirect the output of CMAKE to the file,
  152.      "cmake.log":
  153.  
  154.      CMAKE >cmake.log
  155.  
  156.      See: Using CMAKE with Your Editor
  157.  
  158. ─────Interpreting the Output of CMAKE───────────────────────────────────────
  159.  
  160.      As CMAKE processes a given make file, it sends information
  161.      concerning its activity to standard output.  CMAKE supports both
  162.      a concise and verbose format for this output.  The default format
  163.      is concise.  The verbose format may be requested through the use
  164.      of the /v CMAKE command-line option.  This topic describes the
  165.      data that is contained in the concise/default format for CMAKE
  166.      output.
  167.  
  168.      The first two lines of output give the current date and time, the
  169.      CMAKE version number, and the copyright notice for CMAKE.
  170.  
  171.      The next line has the form:
  172.  
  173.      make_file_name >-CMAKE-> batch_file_name
  174.  
  175.      where make_file_name is the name of the make file (input file)
  176.      that CMAKE is processing and batch_file_name is the full name of
  177.      the batch program (output file), "makefile.bat", that CMAKE
  178.      creates and executes after processing the given make file.
  179.  
  180.      This is followed by a list of all of the commands in the make file
  181.      that must be executed.  Each line of this list has the following
  182.      form:
  183.  
  184.      command_name make_file_line_number reason_why_command_is_required
  185.  
  186.      For example, the list might consist of the following four lines:
  187.  
  188.      cl           2  INC w.h > OBJ x.obj
  189.      lib         41  OBJ x.obj > LIB y.lib
  190.      link        51  LIB y.lib > EXE z.exe
  191.  
  192.      The first line shows that the CL command on line 2 of the make
  193.      file is required because the include file, "w.h", is newer than
  194.      the object file, "x.obj".  The second line shows that the LIB
  195.      command on line 41 of the make file is required because the object
  196.      file, "x.obj" is newer than the library file, "y.lib".  Finally,
  197.      the third line of the list indicates that the LINK command on line
  198.      51 of the make file is required because the library file, "y.lib"
  199.      is newer than the executable file, "z.exe".
  200.  
  201.      This list is followed by a line that gives the amount of time used
  202.      by CMAKE to create the batch program, "makefile.bat".
  203.  
  204.      A line is drawn after the execution time to separate the output of
  205.      CMAKE from the output of the commands that CMAKE executes.
  206.  
  207.      One of the following messages is provided at the end of the output
  208.      that is generated:
  209.  
  210.      ALL TARGETS ARE UP TO DATE
  211.  
  212.      This message indicates that CMAKE has determined that none of the
  213.      commands in the make file need to be executed.
  214.  
  215.      ALL TARGETS WERE SUCCESSFULLY RENEWED
  216.  
  217.      This message indicates that CMAKE has determined that some of the
  218.      commands in the make file were required and that all of these
  219.      required commands were executed and returned zero (indicating
  220.      success).
  221.  
  222.      FAILURE - SOME TARGETS WERE NOT RENEWED
  223.  
  224.      This indicates that some commands in the make file were required
  225.      and executed.  However, one of the commands returned a nonzero
  226.      value (indicating an error).  In this case, all of the required
  227.      commands that follow the command that failed are not executed and
  228.      CMAKE returns a nonzero value.
  229.  
  230. ─────CMAKE Error Messages───────────────────────────────────────────────────
  231.  
  232.      The following two formats are used for CMAKE error messages:
  233.  
  234.      fatal error Mnnnn: message
  235.      file_name(line_number) : error Mnnnn: message
  236.  
  237.      Most of the error messages use the second format.  Many popular
  238.      programmer's editors (e.g. BRIEF(R), Epsilon(TM), and the
  239.      Microsoft Editor) are able to parse error messages in this form
  240.      in order to place you in <file_name> at line 'line_number'.
  241.  
  242.      See: Using CMAKE with Your Editor
  243.           CMAKE Errors
  244.  
  245. ─────How CMAKE Works────────────────────────────────────────────────────────
  246.  
  247.      While CMAKE processes a given make file, it builds a batch program
  248.      called, "makefile.bat".  When it is completed, "makefile.bat"
  249.      consists of all of the commands from the make file that were
  250.      determined (by CMAKE) to be "required".  After the make file has
  251.      been fully processed, CMAKE executes "makefile.bat".
  252.  
  253.      CMAKE views a command in the make file as an entity that uses
  254.      source files to create target files.  Generally speaking, a
  255.      command will be required when one of the following conditions is
  256.      true:
  257.  
  258.      1. At least one of the target files for the command does not
  259.         exist.
  260.      2. There is some source file for the command that is newer than
  261.         some target file for the command.
  262.  
  263.      A command that is determined to be required, is appended to the
  264.      batch program "makefile.bat".  Note that a required command will
  265.      not be executed until CMAKE has processed the entire make file.
  266.  
  267.      It is often the case that the target file of a given command will
  268.      serve as a source file for another command that occurs later in
  269.      the make file.  For example, the target file of a CL command is an
  270.      object file.  Usually, this object file will serve as a source
  271.      file for a LINK command that occurs after the CL command in the
  272.      make file.  If the CL command is required, then the LINK command
  273.      that depends upon the object generated by the CL command, should
  274.      also be required.  This overlapping of the target files of one
  275.      command with the source files of another command causes a "chain
  276.      reaction" of required commands.
  277.  
  278.      Since the required commands are not executed as they are found,
  279.      but accumulated into the file, "makefile.bat" (for later use),
  280.      CMAKE must keep track of all of the target files of each required
  281.      command to ensure that the correct "chain reactions" occur.  In
  282.      some sense, CMAKE simulates the execution of each required
  283.      command.  It does this by creating a fresh "pseudofile" for every
  284.      target file of a required command.  Whenever CMAKE attempts to
  285.      find the time stamp of a particular file, it first searches the
  286.      set of pseudofiles.  If the given file is not found among the
  287.      pseudofiles, then CMAKE searches for the real/original version of
  288.      the file.
  289.  
  290. ─────The CMAKE Command Line─────────────────────────────────────────────────
  291.  
  292.      Syntax
  293.  
  294.      CMAKE [Options]
  295.  
  296.      Options
  297.  
  298.      /?        Displays Command-Line Help
  299.      /a        Displays Information about CMAKE
  300.      /help     Displays Help on CMAKE
  301.      /n        Suppresses Command Execution
  302.      /o        Specifies the Path of "makefile.bat"
  303.      /v        Select Verbose Diagnostic Output
  304.      filename  Specifies the Make-File Name
  305.  
  306.      Example
  307.  
  308.      CMAKE /v /n /oc:\test c:\test\test.mak
  309.  
  310. ─────Examples───────────────────────────────────────────────────────────────
  311.  
  312.      CMAKE
  313.  
  314.      This command will cause CMAKE to attempt to process a make file
  315.      called, "makefile".  CMAKE will assume that "makefile" is located
  316.      in the current directory.  A batch program called, "makefile.bat",
  317.      will be created in the current directory and CMAKE will execute
  318.      this program (provided the statement, "run_output_file = no", has
  319.      not been given in the CMAKE configuration file).  CMAKE will
  320.      use its concise output format to display information as it
  321.      processes the make file.
  322.  
  323.      CMAKE /od:\temp
  324.  
  325.      This command will cause CMAKE to attempt to process a make file
  326.      called, "makefile".  CMAKE will assume that "makefile" is located
  327.      in the current directory.  A batch program called, "makefile.bat",
  328.      will be created in the directory, "d:\temp", which has been
  329.      supplied with the /o option.  This program will be executed
  330.      (provided the statement, "run_output_file = no", has not been
  331.      given in the CMAKE configuration file).  CMAKE will use its
  332.      concise output format to display information as it processes the
  333.      make file.
  334.  
  335.      CMAKE /n /v >d:\temp\cmake.log
  336.  
  337.      This command will cause CMAKE to attempt to process a make file
  338.      called, "makefile".  CMAKE will assume that "makefile" is located
  339.      in the current directory.  A batch program called, "makefile.bat",
  340.      will be created in the current directory.  Since the /n has been
  341.      specified, CMAKE will not execute "makefile.bat".  Since the /v
  342.      has been specified, CMAKE will use its verbose output format to
  343.      display information as it processes the make file.  The output
  344.      from CMAKE will be directed to the file, "d:\temp\cmake.log".
  345.      The combination of options given in this example might be used to
  346.      debug a make file.
  347.  
  348.      CMAKE c:\mak\test.mak
  349.  
  350.      This command will cause CMAKE to attempt to process a make file
  351.      called, "c:\mak\test.mak".  A batch program called,
  352.      "makefile.bat", will be created in the current directory and CMAKE
  353.      will execute this program (provided the statement,
  354.      "run_output_file = no", has not been given in the CMAKE
  355.      configuration file).  CMAKE will use its concise output format to
  356.      display information as it processes the make file.
  357.  
  358. ─────CMAKE Options──────────────────────────────────────────────────────────
  359.  
  360.      Command-line options may be given in upper or lowercase.
  361.  
  362.      With the exception of the make-file name, options must be prefixed
  363.      by a '/' or '-' character.
  364.  
  365. ─────Display Command-Line Help for CMAKE (/?)───────────────────────────────
  366.  
  367.      Syntax:  /?
  368.  
  369.      The /? option is used to display command-line help.
  370.  
  371. ─────Display Information about CMAKE (/a)───────────────────────────────────
  372.  
  373.      Syntax:  /a
  374.  
  375.      The /a option is used to display information on how to contact the
  376.      author of CMAKE and on how to become a registered user of CMAKE.
  377.  
  378. ─────Display Help on CMAKE (/help)──────────────────────────────────────────
  379.  
  380.      Syntax:  /help or /h
  381.  
  382.      The /help option is used to display the CMAKE help file you are
  383.      reading.  If you would like to use this option, place the
  384.      QuickHelp program, QH.EXE, in your current directory or PATH.
  385.  
  386. ─────Suppress Command Execution by CMAKE (/n)───────────────────────────────
  387.  
  388.      Syntax:  /n
  389.  
  390.      The /n option suppresses the execution of commands.  This switch
  391.      takes precedence over the Boolean variable, run_output_file, which
  392.      may be used in the configuration file.  With this switch, the
  393.      batch program, "makefile.bat", is created but not executed.  You
  394.      might wish to use this option to help you debug your make file.
  395.  
  396. ─────Specify the Path of "makefile.bat" (/o)────────────────────────────────
  397.  
  398.      Syntax:  /o
  399.  
  400.      The /o option is used to specify the path of "makefile.bat" (the
  401.      batch program that CMAKE creates and executes).  When the /o
  402.      option is omitted, "makefile.bat" is placed in the current
  403.      directory.
  404.  
  405. ─────Select Verbose Diagnostic Output from CMAKE (/v)───────────────────────
  406.  
  407.      Syntax:  /v
  408.  
  409.      The /v option is used to request the verbose format for CMAKE
  410.      output.  When this option is used, CMAKE provides detailed
  411.      information concerning the processing of the configuration file
  412.      and make file.  You might wish to use this option to help you
  413.      debug your make file.
  414.  
  415. ─────Specify the Make-File Name (filename)──────────────────────────────────
  416.  
  417.      Syntax:  filename
  418.  
  419.      The filename option is used to specify the make-file name.  If
  420.      this option is omitted, CMAKE assumes that the make file is
  421.      called, "makefile", and is located in the current directory.
  422.  
  423. ─────The Make File for CMAKE────────────────────────────────────────────────
  424.  
  425.      Description
  426.  
  427.      Commands
  428.  
  429.           Intrinsic Commands
  430.  
  431.                CL    LIB   MASM  REM
  432.                COPY  LINK  RC    SET
  433.  
  434.           User-Defined Commands
  435.  
  436.           Equivalent Commands
  437.  
  438.           Unrecognized Commands
  439.  
  440.      The if Statement
  441.  
  442.      Comments
  443.  
  444. ─────Description of the Make File───────────────────────────────────────────
  445.  
  446.      A make file lists the operations that are required to build a
  447.      particular program.
  448.  
  449.      CMAKE processes a given make file to determine which commands must
  450.      be executed in order to update a program that is under
  451.      development.
  452.  
  453.      A make file for CMAKE consists of a mixture of commands, if
  454.      statements, and comments.
  455.  
  456. ─────Example────────────────────────────────────────────────────────────────
  457.  
  458.      /* Make File */
  459.  
  460.      cl /c /W4 hello.c
  461.      cl /c /W4 world.c
  462.      lib @message.lrf
  463.      cl /c /W4 greeting.c
  464.      link @greeting.lnk
  465.  
  466.      In the sample make file given above, "message.lrf" is a LIB
  467.      response file that consists of the following lines:
  468.  
  469.      message.lib
  470.      y
  471.      -+hello.obj &
  472.      -+world.obj ;
  473.  
  474.      and "greeting.lnk" is a LINK response file that consists of the
  475.      following lines:
  476.  
  477.      greeting.obj
  478.      greeting.exe /stack:2048
  479.      NUL
  480.      message.lib ;
  481.  
  482. ─────Make-File Commands─────────────────────────────────────────────────────
  483.  
  484.      Make file commands may be divided into the following four classes:
  485.  
  486.           Intrinsic Commands
  487.           User-Defined Commands
  488.           Equivalent Commands
  489.           Unrecognized Commands
  490.  
  491.      The method that CMAKE uses to determine if a given command is
  492.      required is dictated by the class of the command.
  493.  
  494. ─────Intrinsic Commands─────────────────────────────────────────────────────
  495.  
  496.      A make-file command is said to be "intrinsic" if CMAKE has some
  497.      "built-in" knowledge of the how to determine whether or not the
  498.      command is required.
  499.  
  500.      The intrinsic commands are: CL, LIB, LINK, MASM, RC, COPY, SET,
  501.      and REM.
  502.  
  503. ─────CL─────────────────────────────────────────────────────────────────────
  504.  
  505.      Description
  506.  
  507.      When is a CL Command Required?
  508.  
  509.      The CL Command Line
  510.  
  511.      How CMAKE Processes a C-Source File
  512.  
  513.      Switches
  514.  
  515.      Some Restrictions
  516.  
  517.      Error Handling
  518.  
  519.      Output from CMAKE
  520.  
  521.      Verbose Output from CMAKE
  522.  
  523. ─────Description of CL──────────────────────────────────────────────────────
  524.  
  525.      CL is a program that is distributed with the Microsoft C
  526.      Optimizing Compiler.  It provides a command-line interface to the
  527.      compiler programs.
  528.  
  529. ─────When is a CL Command Required?─────────────────────────────────────────
  530.  
  531.      A given CL command will be required if any of the following
  532.      conditions is true:
  533.  
  534.      1. The object file does not exist.
  535.      2. The source file is newer than the object file.
  536.      3. There is an include file that is newer than the object file.
  537.  
  538.      These conditions are checked in order.  If any condition is found
  539.      to be true, the remaining conditions are not checked.
  540.  
  541. ─────The CL Command Line────────────────────────────────────────────────────
  542.  
  543.      Source-File Name
  544.  
  545.      Only one source-file name may be specified.  No global characters
  546.      are allowed in the given source-file name.  The source-file name
  547.      must be placed at the end of the command line.  No default
  548.      extension is assumed for the source file.  If a path is not
  549.      specified, it is assumed that the source file is located in the
  550.      current directory.
  551.  
  552.      Object-File Name
  553.  
  554.      The base name of the object file is assumed to be the same as the
  555.      base name of the source file and the object-file extension is
  556.      assumed to be '.obj'.  The /Fo (or equivalently, -Fo) option may
  557.      be used to specify the path of the object file.  If the /Fo option
  558.      is used, the path that is given with this option must be
  559.      terminated with a backslash.  If the /Fo option is not used, it is
  560.      assumed that the object file is located in the current directory.
  561.  
  562.      Options
  563.  
  564.      Options may appear anywhere between the CL command name and the
  565.      source-file name.  The /c option (compile but do not link) must be
  566.      used.
  567.  
  568. ─────Examples───────────────────────────────────────────────────────────────
  569.  
  570.      command:     cl /c /W3 test.c
  571.      source file: current_directory\test.c
  572.      object file: current_directory\test.obj
  573.  
  574.      command:     cl /c /W3 /Fo..\obj\ ..\c\test.c
  575.      source file: ..\c\test.c
  576.      object file: ..\obj\test.obj
  577.  
  578. ─────How CMAKE Processes a C-Source File────────────────────────────────────
  579.  
  580.      When the object file of a CL command exists, and it is newer than
  581.      the source file, CMAKE will process the C-source file in order to
  582.      determine whether or not there is an include file that is newer
  583.      than the object file.  CMAKE will extract include-file names from
  584.      the include statements that are given in the C-source file.
  585.  
  586.      CMAKE recognizes two forms of the include statement: local and
  587.      system.
  588.  
  589.      Local-Include Statements
  590.  
  591.      The term "local-include statement" is used to refer to an include
  592.      statement that has the form:
  593.  
  594.           #include "filename"
  595.  
  596.      and the file associated with such an include statement is said to
  597.      be a "local-include file".
  598.  
  599.      System-Include Statements
  600.  
  601.      The term "system-include statement" is used to refer to an include
  602.      statement that has the form:
  603.  
  604.           #include <filename>
  605.  
  606.      and the file associated with such an include statement is said to
  607.      be a "system-include file".
  608.  
  609.      Sensitivity to Local- and System-Include Statements
  610.  
  611.      The "sensitivity to local-include statements" and the "sensitivity
  612.      to system-include statements" may be thought of as Boolean state
  613.      variables for CMAKE.  If the sensitivity to local-include
  614.      statements is "on", and CMAKE encounters a local-include
  615.      statement, CMAKE will check to see if the include file associated
  616.      with the include statement is newer than the object file.
  617.      Otherwise, if the sensitivity to local-include statements is
  618.      "off", CMAKE will ignore the local-include statement.  Likewise,
  619.      if the sensitivity to system-include statements is "on", and CMAKE
  620.      encounters a system-include statement, CMAKE will check to see if
  621.      the include file associated with the include statement is newer
  622.      than the object file.  Otherwise, if the sensitivity to system-
  623.      include statements is "off", CMAKE will ignore the system-include
  624.      statement.
  625.  
  626.      By default, the sensitivity to local-include statements is "on",
  627.      and the sensitivity to system-include statements is "off".
  628.  
  629.      The sensitivity to local-include statements and the sensitivity
  630.      to system-include statements may be altered through the use of a
  631.      variety of switches.
  632.  
  633.      For each source file, CMAKE uses the Boolean variables,
  634.      c_include_""_on and c_include_<>_on, to initialize the sensitivity
  635.      to local- and system-include statements, respectively.
  636.  
  637.      Within a given C-source file, any of the following C comments may
  638.      be used to modify the sensitivity to local- or system-include
  639.      statements:
  640.  
  641.      /* CMAKE - INCLUDE "" OFF */
  642.      /* CMAKE - INCLUDE "" ON */
  643.      /* CMAKE - INCLUDE <> OFF */
  644.      /* CMAKE - INCLUDE <> ON */
  645.  
  646.      Locating Include Files
  647.  
  648.      If CMAKE does obtain an include-file name from an include
  649.      statement, it will attempt to determine the directory in which
  650.      the file is located.  If the file is a local-include file, CMAKE
  651.      will look for the file in the directory in which the source file
  652.      for the given CL command is located.  If the include file is not
  653.      found in the source-file's directory, CMAKE will search the
  654.      directories specified by the INCLUDE environment variable (if it
  655.      is defined), one by one, from left to right.  On the other hand,
  656.      if the file is a system-include file, CMAKE will only look for the
  657.      file in the directories given by the INCLUDE environment variable.
  658.  
  659.      To prevent CMAKE from searching for local-include files in the
  660.      source-file's directory, use the following statement in the
  661.      configuration file:
  662.  
  663.      search_source_dir_for_includes = no
  664.  
  665.      Scanning Include Files for Include Statements
  666.  
  667.      By default, CMAKE does not scan include files for include
  668.      statements.  To force CMAKE to scan include files for include
  669.      statements, place the following statement in your configuration
  670.      file:
  671.  
  672.      scan_include_files_for_includes = yes
  673.  
  674.      Alternatively, you may place the following commands anywhere
  675.      within your make file (except within the body of an if statement)
  676.      to achieve a "local" effect:
  677.  
  678.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  679.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  680.  
  681.      When a REM statement of this type is used, all of the CL commands
  682.      that follow the statement will be affected.
  683.  
  684.      The End-of-Includes Comment
  685.  
  686.      If CMAKE encounters the comment:
  687.  
  688.      /* CMAKE - INCLUDE END */
  689.  
  690.      while scanning a C-source file, it will stop processing the file,
  691.      i.e. CMAKE will not read any lines in the source file that occur
  692.      after this comment.
  693.  
  694.      Although it is not required, you should place this comment after
  695.      the last include statement in any C-source files that will be
  696.      scanned by CMAKE.  If you do this, you will reduce the amount of
  697.      time that CMAKE takes to execute.
  698.  
  699.      The Procedure Used to Examine a C-Source File
  700.  
  701.      For a given CL command, CMAKE uses the following process to
  702.      scan the C-source file in order to determine whether or not there
  703.      is an include file that is newer than the object file:
  704.  
  705.      A. Initialize the sensitivity to local-include statements
  706.         and system-include statements.
  707.  
  708.      B. Read a line from the source file.
  709.  
  710.      C. If we are at the end of the source file
  711.  
  712.            Go to step G - there are no include files in this source
  713.            file that are newer than the object file.
  714.  
  715.      D. Skip leading white space on the line.
  716.  
  717.      E. If the line begins with the comment
  718.                 /* CMAKE - INCLUDE "" ON */
  719.  
  720.                 Enable the sensitivity to local-include statements.
  721.  
  722.         Else if the line begins with the comment
  723.                 /* CMAKE - INCLUDE "" OFF */
  724.  
  725.                 Disable the sensitivity to local-include statements.
  726.  
  727.         Else if the line begins with the comment
  728.                 /* CMAKE - INCLUDE <> ON */
  729.  
  730.                 Enable the sensitivity to system-include statements.
  731.  
  732.         Else if the line begins with the comment
  733.                 /* CMAKE - INCLUDE <> OFF */
  734.  
  735.                 Disable the sensitivity to system-include statements.
  736.  
  737.         Else if the line begins with the comment
  738.                 /* CMAKE - INCLUDE END */
  739.  
  740.                 Go to step G - there are no include files in this
  741.                 source file that are newer than the object file.
  742.  
  743.         Else if the line begins with the character, '#'
  744.  
  745.                 1. Skip white space following the '#' character.
  746.  
  747.                 2. If the next token is 'include'
  748.  
  749.                       a. Skip white space following the 'include'
  750.                          token.
  751.  
  752.                       b. If (the next character is '"' and the
  753.                          sensitivity to local includes is on) or (the
  754.                          next character is '<' and the sensitivity to
  755.                          system includes is on)
  756.  
  757.                             i.    Copy the include-file name.
  758.  
  759.                             ii.   If the include file is local and the
  760.                                   configuration data specifies that we
  761.                                   must search for include files in the
  762.                                   source-file directory
  763.  
  764.                                      Search for the include file in the
  765.                                      source-file directory (the full
  766.                                      include-file name is obtained by
  767.                                      prefixing the source-file path to
  768.                                      the include-file name derived from
  769.                                      the source file).
  770.  
  771.                              iii. If the include file has not yet been
  772.                                   found
  773.  
  774.                                      Search for the include file in the
  775.                                      paths given by the INCLUDE
  776.                                      environment variable.
  777.  
  778.                              iv.  If the include file is newer than the
  779.                                   object file
  780.  
  781.                                           Go to step G - there is an
  782.                                           include file that is newer
  783.                                           than the object file.
  784.  
  785.                                   Else if the configuration data
  786.                                   specifies that we must scan include
  787.                                   files for include statements
  788.  
  789.                                           Save the include-file name
  790.  
  791.      F. Go to step B
  792.  
  793.      G. If we must scan include files for include statements and an
  794.         include file that is newer than the object file has not yet
  795.         been found
  796.  
  797.            For each saved include file, repeat the process given above
  798.            (beginning with step A) with the include file playing the
  799.            role of the source file.  Continue until all saved include
  800.            files have been examined or an include file that is newer
  801.            than the object file is found.
  802.  
  803. ─────Switches for CL────────────────────────────────────────────────────────
  804.  
  805.      The following switches may be used to affect the way in which
  806.      CMAKE processes a CL command:
  807.  
  808.      /* CMAKE - INCLUDE END */
  809.  
  810.      C comment statement in C-source or -include files.  Used to
  811.      indicate that there are no include statements after the comment.
  812.  
  813.      scan_include_files_for_includes
  814.  
  815.      Boolean variable set in the configuration file.  Used to indicate
  816.      whether or not CMAKE should scan include files for include
  817.      statements.  (Default: no).
  818.  
  819.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  820.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  821.  
  822.      Make file commands.  Used to indicate whether or not CMAKE should
  823.      scan include files for include statements.  These commands take
  824.      precedence over the Boolean variable,
  825.      scan_include_files_for_includes, which may be set in the
  826.      configuration file.
  827.  
  828.      search_source_dir_for_includes
  829.  
  830.      Boolean variable set in the configuration file.  Used to indicate
  831.      whether or not CMAKE should look for local-include files in the
  832.      source-file's directory before using the INCLUDE environment
  833.      variable.  (Default: yes).
  834.  
  835.      c_include_""_on
  836.      c_include_<>_on
  837.  
  838.      Boolean variables set in the configuration file.  Used to control
  839.      the initial sensitivity for each source file to local- and system-
  840.      include statements.  c_include_""_on (Default: yes).
  841.      c_include_<>_on (Default: no)
  842.  
  843.      /* CMAKE - INCLUDE "" OFF */
  844.      /* CMAKE - INCLUDE "" ON */
  845.      /* CMAKE - INCLUDE <> OFF */
  846.      /* CMAKE - INCLUDE <> ON */
  847.  
  848.      C comment statements in C-source or -include files.  Used to
  849.      modify the sensitivity to local- and system-include statements.
  850.      The effect of these switches is local.  They only affect the
  851.      processing of the source file in which they are contained.  These
  852.      switches take precedence over the Boolean variables,
  853.      c_include_""_on and c_include_<>_on, which may be set in the
  854.      configuration file.
  855.  
  856. ─────Some Restrictions on CL────────────────────────────────────────────────
  857.  
  858.      Preprocessor Directives
  859.  
  860.      #include is the only preprocessor directive that CMAKE recognizes.
  861.      One of the implications of this is that CMAKE will not ignore
  862.      conditionally compiled include statements based upon whether or
  863.      not a particular identifier has been defined (either with a
  864.      #define statement or through the use of the /D CL command-line
  865.      option).  For example, in the following section of source code, if
  866.      the sensitivity to local-include statements is on, CMAKE will not
  867.      skip the include statement - regardless of whether or not the
  868.      identifier, INCLUDE_TEST_H, has been defined:
  869.  
  870.      #ifdef INCLUDE_TEST_H
  871.         #include "test.h"
  872.      #endif
  873.  
  874.      Any of the following approaches could be taken to instruct CMAKE
  875.      to ignore this include statement:
  876.  
  877.      #ifdef INCLUDE_TEST_H
  878.         /* CMAKE - INCLUDE "" OFF */
  879.         #include "test.h"
  880.         /* CMAKE - INCLUDE "" ON */
  881.      #endif
  882.  
  883.      or
  884.  
  885.      #ifdef INCLUDE_TEST_H
  886.      // #include "test.h"
  887.      #endif
  888.  
  889.      or
  890.  
  891.      #ifdef INCLUDE_TEST_H
  892.      /* #include "test.h" */
  893.      #endif
  894.  
  895.      Include-File Names
  896.  
  897.      The full path of an include file may not be given in an include
  898.      statement (i.e. the include-file name must not begin with a drive
  899.      or a '\' character).  However, relative paths may be used (i.e.
  900.      the include-file name may begin with dots (..) or a directory
  901.      name).
  902.  
  903. ─────Error Handling with CL─────────────────────────────────────────────────
  904.  
  905.      If a CL command is required, CMAKE will add the CL command to the
  906.      batch file, "makefile.bat".  In addition, CMAKE will insert the
  907.      following command after the CL command:
  908.  
  909.      if errorlevel 1 goto failed
  910.  
  911.      This will ensure that if the CL command fails (i.e. returns a
  912.      nonzero value), "makefile.bat" will terminate.
  913.  
  914. ─────Output from CMAKE for CL───────────────────────────────────────────────
  915.  
  916.      Normally, CMAKE provides no information on the processing of a
  917.      given CL command unless the command is required.  If the command
  918.      is required, one of the following messages will appear:
  919.  
  920.      OBJ object_file Does Not Exist
  921.  
  922.      This indicates that <object_file> does not exist.
  923.  
  924.      SRC source_file > OBJ
  925.  
  926.      This indicates that <source_file> is newer than the object file.
  927.  
  928.      INC include_file > OBJ object_file
  929.  
  930.      This indicates that <include_file> is newer than <object_file>.
  931.  
  932. ─────Examples───────────────────────────────────────────────────────────────
  933.  
  934.      cl          35  OBJ test.obj Does Not Exist
  935.      cl          35  SRC test.c > OBJ
  936.      cl          35  INC test.h > OBJ test.obj
  937.  
  938. ─────Verbose Output from CMAKE for CL───────────────────────────────────────
  939.  
  940.      When the verbose output format is selected, CMAKE lists all of the
  941.      time stamp comparisons that it makes in route to determining if a
  942.      given CL command is required.
  943.  
  944.      Examples: CL Not Required
  945.                CL Required
  946.  
  947. ─────Example: CL Not Required───────────────────────────────────────────────
  948.  
  949.      cl /c /W3 test.c
  950.  
  951.            Command:      cl
  952.            Parameters:   /c /W3 test.c
  953.            Command Type: intrinsic
  954.            Command ID:   0
  955.  
  956.            Source File: test.c
  957.            Object File: test.obj
  958.  
  959.            Source File is older than Object File
  960.            Include File test1.h is older than Object File
  961.            Include File test2.h is older than Object File
  962.            Include File test3.h is older than Object File
  963.  
  964.            * not required *
  965.  
  966. ─────Example: CL Required───────────────────────────────────────────────────
  967.  
  968.      cl /c /W3 test.c
  969.  
  970.            Command:      cl
  971.            Parameters:   /c /W3 test.c
  972.            Command Type: intrinsic
  973.            Command ID:   0
  974.  
  975.            Source File: test.c
  976.            Object File: test.obj
  977.  
  978.            Source File is older than Object File
  979.            Include File test1.h is older than Object File
  980.      ***** Include File test2.h is NEWER than Object File
  981.  
  982.            Modified Command Line:
  983.  
  984.      cl /c /W3 test.c
  985.      if errorlevel 1 goto failed
  986.  
  987.            * REQUIRED *
  988.  
  989. ─────COPY───────────────────────────────────────────────────────────────────
  990.  
  991.      Description
  992.  
  993.      The COPY Command Line
  994.  
  995.      When is a COPY Command Required?
  996.  
  997.      Some Restrictions
  998.  
  999.      Error Handling
  1000.  
  1001.      Output from CMAKE
  1002.  
  1003.      Verbose Output from CMAKE
  1004.  
  1005. ─────Description of COPY────────────────────────────────────────────────────
  1006.  
  1007.      COPY is an internal MS-DOS command.  It is used to copy one or
  1008.      more files from one location to another.
  1009.  
  1010. ─────The COPY Command Line──────────────────────────────────────────────────
  1011.  
  1012.      The COPY command must be of the following form:
  1013.  
  1014.      copy source target
  1015.  
  1016.      Both <source> and <target> are required.  <source> and <target>
  1017.      may be a file or directory (but not a root directory).  If
  1018.      <source> (or <target>) is a file, and the path of the file is not
  1019.      specified, it is assumed that the file is located in the current
  1020.      directory.
  1021.  
  1022. ─────When is a COPY Command Required?───────────────────────────────────────
  1023.  
  1024.      The conditions under which a given COPY command (of the form:
  1025.      copy source target) will be required, depend upon the "type" of
  1026.      the COPY command.  There are four possible types:
  1027.  
  1028.                  ┌─────────┬───────────┬───────────┐
  1029.                  │  Type   │ <source>  │ <target>  │
  1030.                  ├─────────┼───────────┼───────────┤
  1031.                  │ Type ff │ file      │ file      │
  1032.                  │ Type fd │ file      │ directory │
  1033.                  │ Type df │ directory │ file      │
  1034.                  │ Type dd │ directory │ directory │
  1035.                  └─────────┴───────────┴───────────┘
  1036.  
  1037.      Regardless of the "type" of the COPY command, if <target> does not
  1038.      exist, the COPY command will be required.  Otherwise, the
  1039.      conditions are as follows:
  1040.  
  1041.      Type ff: copy source_file target_file
  1042.  
  1043.      If the source file is newer than the target file, the COPY command
  1044.      will be required
  1045.  
  1046.      Type fd: copy source_file target_directory
  1047.  
  1048.      The target-file name is constructed from the target directory name
  1049.      and the source-file name.  If the target file does not exist, or
  1050.      if the source file is newer than the target file, the COPY command
  1051.      will be required.
  1052.  
  1053.      Type df: copy source_directory target_file
  1054.  
  1055.      The COPY command will always be required in this case.
  1056.  
  1057.      Type dd: copy source_directory target_directory
  1058.  
  1059.      If the source directory is empty, the COPY command will not be
  1060.      required.  Otherwise, for each file, <source_file>, in the source
  1061.      directory, the corresponding target-file name is constructed from
  1062.      <target_directory> and <source_file>.  If <target_file> does not
  1063.      exist, or if <source_file> is newer than <target_file>, the
  1064.      following COPY command will be required:
  1065.  
  1066.      copy source_file target_file
  1067.  
  1068. ─────Some Restrictions on COPY──────────────────────────────────────────────
  1069.  
  1070.      Global Characters
  1071.  
  1072.      The source and target names may not contain the global characters,
  1073.      '*' and '?'.
  1074.  
  1075.      Concatenation
  1076.  
  1077.      CMAKE does not support the concatenation operator, '+', for the
  1078.      COPY command.
  1079.  
  1080.      Options
  1081.  
  1082.      Options (e.g. /A, /B, and /V) may only be placed after the target
  1083.      name.  White space must be placed between the target name and the
  1084.      first option.  The options, /A and /B, may not be used after the
  1085.      source name.
  1086.  
  1087.      Reserved Device Names
  1088.  
  1089.      The reserved device names: PRN, LPT1, LPT2, LPT3, CON, COM1, COM2,
  1090.      COM3, COM4, and AUX, may be used for source and target names.
  1091.      However, the results will be predictable.  Regardless of whether
  1092.      or not the source name is a reserved device name, if the target
  1093.      name is a reserved device name, the COPY command will not be
  1094.      required.  If the source name is a reserved device name, and the
  1095.      target name is not a reserved device name, the COPY command will
  1096.      be required.
  1097.  
  1098. ─────Error Handling with COPY───────────────────────────────────────────────
  1099.  
  1100.      CMAKE will usually insert the following command into the batch
  1101.      file, "makefile.bat", after a required command:
  1102.  
  1103.      if errorlevel 1 goto failed
  1104.  
  1105.      However, this is not done in the case of the COPY command because
  1106.      the COPY command does not return a nonzero value when it fails.
  1107.  
  1108. ─────Output from CMAKE for COPY─────────────────────────────────────────────
  1109.  
  1110.      Normally, CMAKE provides no information on the processing of a
  1111.      given COPY command unless the command is required.  If the command
  1112.      is required, one of the following messages will appear:
  1113.  
  1114.      TRG target_file Does Not Exist
  1115.  
  1116.      This indicates that <target_file> does not exist.
  1117.  
  1118.      SRC source_file > TRG target_file
  1119.  
  1120.      This indicates that <source_file> is newer than <target_file>.
  1121.  
  1122.      SRC source_dir is a Directory and TRG target_file is a File
  1123.  
  1124.      This indicates that the source of the COPY command is a directory
  1125.      and the target is a file.  (This form of the COPY command is
  1126.      always required.)
  1127.  
  1128. ─────Examples───────────────────────────────────────────────────────────────
  1129.  
  1130.      copy        12  TRG test.trg Does Not Exist
  1131.      copy        12  SRC test.src > TRG test.trg
  1132.      copy        12  SRC \s is a Directory and test.trg is a File
  1133.  
  1134. ─────Verbose Output from CMAKE for COPY─────────────────────────────────────
  1135.  
  1136.      When the verbose output format is selected, CMAKE lists all of the
  1137.      time stamp comparisons that it makes in route to determining if a
  1138.      given COPY command is required.
  1139.  
  1140.      In the following two examples, "\s" and "\t" are directories, and
  1141.      the files in the directory, "\s", are: "1.txt", "2.txt", "3.txt",
  1142.      "4.txt", and "5.txt".
  1143.  
  1144.      Examples: COPY Not Required
  1145.                COPY Required
  1146.  
  1147. ─────Example: COPY Not Required─────────────────────────────────────────────
  1148.  
  1149.      copy \s \t
  1150.  
  1151.            Command:      copy
  1152.            Parameters:   \s \t
  1153.            Command Type: intrinsic
  1154.            Command ID:   4
  1155.  
  1156.            Source: \s
  1157.            Target: \t
  1158.  
  1159.            Source File \s\1.txt is older or equal to Target File \t\1.txt
  1160.            Source File \s\2.txt is older or equal to Target File \t\2.txt
  1161.            Source File \s\3.txt is older or equal to Target File \t\3.txt
  1162.            Source File \s\4.txt is older or equal to Target File \t\4.txt
  1163.            Source File \s\5.txt is older or equal to Target File \t\5.txt
  1164.  
  1165.            * not required *
  1166.  
  1167. ─────Example: COPY Required─────────────────────────────────────────────────
  1168.  
  1169.      copy \s \t
  1170.  
  1171.            Command:      copy
  1172.            Parameters:   \s \t
  1173.            Command Type: intrinsic
  1174.            Command ID:   4
  1175.  
  1176.            Source: \s
  1177.            Target: \t
  1178.  
  1179.      ***** Source File \s\1.txt is NEWER than Target File \t\1.txt
  1180.            Source File \s\2.txt is older or equal to Target File \t\2.txt
  1181.      ***** Target File \t\3.txt Does Not Exist
  1182.            Source File \s\4.txt is older or equal to Target File \t\4.txt
  1183.      ***** Source File \s\5.txt is NEWER than Target File \t\5.txt
  1184.  
  1185.            * REQUIRED *
  1186.  
  1187.      Note:
  1188.  
  1189.      In this example, the following commands would be written to the
  1190.      batch file, "makefile.bat":
  1191.  
  1192.      copy \s\1.txt \t\1.txt
  1193.      copy \s\3.txt \t\3.txt
  1194.      copy \s\5.txt \t\5.txt
  1195.  
  1196. ─────LIB────────────────────────────────────────────────────────────────────
  1197.  
  1198.      Description
  1199.  
  1200.      When is a LIB Command Required?
  1201.  
  1202.      The LIB Command Line
  1203.  
  1204.      Modified Command Line
  1205.  
  1206.      Error Handling
  1207.  
  1208.      Some Restrictions
  1209.  
  1210.      Output from CMAKE
  1211.  
  1212.      Verbose Output from CMAKE
  1213.  
  1214. ─────Description of LIB─────────────────────────────────────────────────────
  1215.  
  1216.      LIB is a program that is distributed with the Microsoft C
  1217.      Optimizing Compiler and the Microsoft Macro Assembler.  It is used
  1218.      to create and maintain library files.
  1219.  
  1220. ─────When is a LIB Command Required?────────────────────────────────────────
  1221.  
  1222.      A given LIB command will be required if any of the following
  1223.      conditions is true:
  1224.  
  1225.      1. The library file does not exist.
  1226.      2. A component file (object or library) is newer than the library
  1227.         file.
  1228.  
  1229.      These conditions are checked in order.  If any condition is found
  1230.      to be true, the remaining conditions are not checked.
  1231.  
  1232. ─────The LIB Command Line───────────────────────────────────────────────────
  1233.  
  1234.      Examples: A Library of Objects
  1235.                A Library of Libraries
  1236.  
  1237.      Command Line
  1238.  
  1239.      The library-file name, component files (objects or libraries), and
  1240.      options must be specified in a LIB response file.  The first non-
  1241.      white-space character that follows the LIB command name must be
  1242.      '@'.  This character must be followed by a response-file name.
  1243.      White space is allowed between the character, '@', and the
  1244.      response-file name.  The response-file name may be followed by
  1245.      white space or a semicolon.  If the path of the response file is
  1246.      not specified, it is assumed that the response file is located in
  1247.      the current directory.
  1248.  
  1249.      Response File
  1250.  
  1251.      The library-file name must be placed at the beginning of the first
  1252.      line of the response file.  White space may precede the library-
  1253.      file name.  No default extension is assumed for the library file.
  1254.      If the path of the library is not specified, it is assumed that
  1255.      the library is located in the current directory.  All LIB options
  1256.      must be placed after the library-file name.  White space must be
  1257.      used to separate the library-file name and the first option.
  1258.  
  1259.      The letter, 'y', must be placed on the second line of the
  1260.      response file.  This is used as the answer to the LIB prompt:
  1261.      "Library does not exist.  Create? (y/n)", in the case where the
  1262.      library does not exist.  White space may precede and follow the
  1263.      character, 'y'.
  1264.  
  1265.      The last section of the response file consists of the set of
  1266.      component-file names.  CMAKE accepts two formats for this list.
  1267.      The list may contain either a set of object files or a set of
  1268.      library files.  Regardless of the format used, each line in this
  1269.      section may contain only one file name.  Each file name must be
  1270.      preceded by an operation.  If the list contains a set of objects,
  1271.      each object-file name must be preceded by the "replace" command
  1272.      symbol, '-+'.  If the list contains a set of libraries, each
  1273.      library-file name must be preceded by the "add" command symbol,
  1274.      '+'.  White space may be placed before the command symbols,
  1275.      between the '-' and '+' characters of the '-+' command symbol, and
  1276.      between the command symbol and the component-file name.  No
  1277.      default extension is assumed for the component files.  If the path
  1278.      of a component file is not specified, it is assumed that the
  1279.      component file is located in the current directory.  Except for
  1280.      the last component in the list, each component-file name must be
  1281.      followed by the character, '&'.  White space is allowed between a
  1282.      component-file name and the character, '&'.  The last component-
  1283.      file name in the list of components should not be followed by the
  1284.      character, '&'.
  1285.  
  1286.      CMAKE ignores all lines in the response file that occur after the
  1287.      line that contains the last component-file name.
  1288.  
  1289. ─────Example: A Library of Objects──────────────────────────────────────────
  1290.  
  1291.      command: lib @test.lrf
  1292.  
  1293.      where "test.lrf" is a LIB response file with the following lines:
  1294.  
  1295.      test.lib /I
  1296.      y
  1297.      -+test1.obj &
  1298.      -+test2.obj ;
  1299.  
  1300. ─────Example: A Library of Libraries────────────────────────────────────────
  1301.  
  1302.      command: lib @test.lrf
  1303.  
  1304.      where "test.lrf" is a LIB response file with the following lines:
  1305.  
  1306.      test.lib /I
  1307.      y
  1308.      +test1.lib &
  1309.      +test2.lib ;
  1310.  
  1311. ─────Modified Command Line for LIB──────────────────────────────────────────
  1312.  
  1313.      If a LIB command is required, CMAKE will add the LIB command to
  1314.      the batch file, "makefile.bat".
  1315.  
  1316.      If the library consists of a set of objects, CMAKE will create a
  1317.      new LIB response file that contains only those object files that
  1318.      are newer than the library.  The new LIB response file will have
  1319.      the same name as the original, except that the extension, '.clb',
  1320.      will be used in place of the original response-file extension.
  1321.  
  1322.      If the library consists of a set of component libraries,
  1323.      and the library (into which the components are to be placed)
  1324.      exists, CMAKE will insert the following command into the batch
  1325.      file, "makefile.bat", before the LIB command:
  1326.  
  1327.      erase library_file
  1328.  
  1329.      Note that in this case, since the library is a conglomerate of
  1330.      component libraries that are added (+) together, the library must
  1331.      be erased, and rebuilt from scratch.
  1332.  
  1333. ─────Error Handling with LIB────────────────────────────────────────────────
  1334.  
  1335.      If a LIB command is required, CMAKE will insert the following
  1336.      command into the batch file, "makefile.bat", after the LIB
  1337.      command:
  1338.  
  1339.      if errorlevel 1 goto failed
  1340.  
  1341.      This will ensure that if the LIB command fails (i.e. returns a
  1342.      nonzero value), "makefile.bat" will terminate.
  1343.  
  1344. ─────Some Restrictions on LIB───────────────────────────────────────────────
  1345.  
  1346.      Response-File Name
  1347.  
  1348.      If the response file consists of a list of objects, the extension
  1349.      of the LIB response-file name may not be '.clb'
  1350.  
  1351.      Cross-Reference-Listing File and Output Library
  1352.  
  1353.      If a cross-reference-listing file and output library file are
  1354.      specified in the LIB response file, they will not be included in
  1355.      the new response file that CMAKE creates in the case where the
  1356.      response file consists of a list of objects.
  1357.  
  1358. ─────Output from CMAKE for LIB──────────────────────────────────────────────
  1359.  
  1360.      Normally, CMAKE provides no information on the processing of a
  1361.      given LIB command unless the command is required.  If the command
  1362.      is required, one of the following messages will appear:
  1363.  
  1364.      LIB library_file Does Not Exist
  1365.  
  1366.      This indicates that <library_file> does not exist.
  1367.  
  1368.      OBJ component_object_file > LIB library_file
  1369.  
  1370.      This indicates that <component_object_file> is newer than
  1371.      <library_file>.
  1372.  
  1373.      LIB component_library_file > LIB library_file
  1374.  
  1375.      This indicates that <component_library_file> is newer than
  1376.      <library_file>.
  1377.  
  1378. ─────Examples───────────────────────────────────────────────────────────────
  1379.  
  1380.      lib         36  LIB test.lib Does Not Exist
  1381.      lib         36  OBJ test1.obj > LIB test.lib
  1382.      lib         36  LIB test1.lib > LIB test.lib
  1383.  
  1384. ─────Verbose Output from CMAKE for LIB──────────────────────────────────────
  1385.  
  1386.      When the verbose output format is selected, CMAKE lists all of the
  1387.      time stamp comparisons that it makes in route to determining if a
  1388.      given LIB command is required.
  1389.  
  1390.      The next two examples illustrate the verbose output generated for
  1391.      cases where the LIB response file consists of a set of objects.
  1392.      For these examples, the LIB response file, "test.lrf", consists of
  1393.      the following lines:
  1394.  
  1395.      test.lib
  1396.      y
  1397.      -+test1.obj &
  1398.      -+test2.obj ;
  1399.  
  1400.      Examples: A Library of Objects: LIB Not Required
  1401.                A Library of Objects: LIB Required
  1402.  
  1403.      The next two examples illustrate the verbose output generated for
  1404.      cases where the LIB response file consists of a set of libraries.
  1405.      For these examples, the LIB response file, "test.lrf", consists of
  1406.      the following lines:
  1407.  
  1408.      test.lib
  1409.      y
  1410.      +test1.lib &
  1411.      +test2.lib ;
  1412.  
  1413.      Examples: A Library of Libraries: LIB Not Required
  1414.                A Library of Libraries: LIB Required
  1415.  
  1416. ─────Example: A Library of Objects: LIB Not Required────────────────────────
  1417.  
  1418.      lib @test.lrf
  1419.  
  1420.            Command:      lib
  1421.            Parameters:   @test.lrf
  1422.            Command Type: intrinsic
  1423.            Command ID:   1
  1424.  
  1425.            Response File: test.lrf
  1426.            Library File:  test.lib
  1427.  
  1428.            Response-File Format: Update Object Modules
  1429.  
  1430.            Object File test1.obj is older than Library File
  1431.            Object File test2.obj is older than Library File
  1432.  
  1433.            * not required *
  1434.  
  1435. ─────Example: A Library of Objects: LIB Required────────────────────────────
  1436.  
  1437.      lib @test.lrf
  1438.  
  1439.            Command:      lib
  1440.            Parameters:   @test.lrf
  1441.            Command Type: intrinsic
  1442.            Command ID:   1
  1443.  
  1444.            Response File: test.lrf
  1445.            Library File:  test.lib
  1446.  
  1447.            Response-File Format: Update Object Modules
  1448.  
  1449.            Object File test1.obj is older than Library File
  1450.      ***** Object File test2.obj is NEWER than Library File
  1451.  
  1452.            New Response File test.clb Created
  1453.  
  1454.            Modified Command Line:
  1455.  
  1456.      lib @test.clb
  1457.      if errorlevel 1 goto failed
  1458.  
  1459.            * REQUIRED *
  1460.  
  1461. ─────Example: A Library of Libraries: LIB Not Required──────────────────────
  1462.  
  1463.      lib @test.lrf
  1464.  
  1465.            Command:      lib
  1466.            Parameters:   @test.lrf
  1467.            Command Type: intrinsic
  1468.            Command ID:   1
  1469.  
  1470.            Response File: test.lrf
  1471.            Library File:  test.lib
  1472.  
  1473.            Response-File Format: Merge Libraries
  1474.  
  1475.            Component-Library File test1.lib is older than Library File
  1476.            Component-Library File test2.lib is older than Library File
  1477.  
  1478.            * not required *
  1479.  
  1480. ─────Example: A Library of Libraries: LIB Required──────────────────────────
  1481.  
  1482.      lib @test.lrf
  1483.  
  1484.            Command:      lib
  1485.            Parameters:   @test.lrf
  1486.            Command Type: intrinsic
  1487.            Command ID:   1
  1488.  
  1489.            Response File: test.lrf
  1490.            Library File:  test.lib
  1491.  
  1492.            Response-File Format: Merge Libraries
  1493.  
  1494.            Component-Library File test1.lib is older than Library File
  1495.      ***** Component-Library File test2.lib is NEWER than Library File
  1496.  
  1497.            Modified Command Line:
  1498.  
  1499.      erase test.lib
  1500.      lib @test.lrf
  1501.      if errorlevel 1 goto failed
  1502.  
  1503.            * REQUIRED *
  1504.  
  1505. ─────LINK───────────────────────────────────────────────────────────────────
  1506.  
  1507.      Description
  1508.  
  1509.      When is a LINK Command Required?
  1510.  
  1511.      The LINK Command Line
  1512.  
  1513.      Error Handling
  1514.  
  1515.      Output from CMAKE
  1516.  
  1517.      Verbose Output from CMAKE
  1518.  
  1519. ─────Description of LINK────────────────────────────────────────────────────
  1520.  
  1521.      LINK is a program that is distributed with the Microsoft C
  1522.      Optimizing Compiler and the Microsoft Macro Assembler.  It is used
  1523.      to build executable files and dynamic-link libraries.
  1524.  
  1525. ─────When is a LINK Command Required?───────────────────────────────────────
  1526.  
  1527.      A given LINK command will be required if any of the following
  1528.      conditions is true:
  1529.  
  1530.      1. The executable file does not exist.
  1531.      2. A component-object file is newer than the executable file.
  1532.      3. A component-library file is newer than the executable file.
  1533.      4. The module-definition file is newer than the executable file.
  1534.  
  1535.      These conditions are checked in order.  If any condition is found
  1536.      to be true, the remaining conditions are not checked.
  1537.  
  1538. ─────The LINK Command Line──────────────────────────────────────────────────
  1539.  
  1540.      Examples: Linking Objects
  1541.                Linking with Libraries
  1542.                Using a Module-Definition File
  1543.  
  1544.      Command Line
  1545.  
  1546.      The executable-file name, component-object files, component-
  1547.      library files, module-definition file, and options must be
  1548.      specified in a LINK response file.  The first non-white-space
  1549.      character that follows the LINK command name must be '@'.  This
  1550.      character must be followed by a response-file name.  White space
  1551.      is allowed between the character, '@', and the response-file name.
  1552.      The response-file name may be followed by white space or a
  1553.      semicolon.  If the path of the response file is not specified, it
  1554.      is assumed that the response file is located in the current
  1555.      directory.
  1556.  
  1557.      Response File
  1558.  
  1559.      Each line of the response file may contain only one file name.
  1560.      White space may precede the file name given on any line.
  1561.  
  1562.      The first section of the response file must consist of a list of
  1563.      object files.  No default extension is assumed for the object
  1564.      files.  If the path of an object is not specified, it is assumed
  1565.      that the object is located in the current directory.  Except for
  1566.      the last object in the list, each object-file name must be
  1567.      followed by the character, '+'.  White space is allowed between an
  1568.      object-file name and the character, '+'.  The last object-file
  1569.      name in the list of objects must not be followed by the character,
  1570.      '+'.
  1571.  
  1572.      The line that follows the last object must begin with the name of
  1573.      the executable file.  LINK options may be placed on this line,
  1574.      after the executable-file name.  White space must be used to
  1575.      separate the executable-file name and the first option.  If a map
  1576.      file is not desired, there are no component libraries, and there
  1577.      is no module-definition file, a semicolon must be placed at the
  1578.      end of the line that contains the executable-file name.
  1579.  
  1580.      If a semicolon has not been used at the end of the executable-file
  1581.      line, the line that follows the executable name must contain the
  1582.      map-file name.  If there are no component libraries and there is
  1583.      no module-definition file, a semicolon must be placed at the end
  1584.      of the line that contains the map-file name.  If a map file is not
  1585.      desired, and there are component libraries or there is a module-
  1586.      definition file, either use NUL for the map-file name or leave the
  1587.      map-file line blank.
  1588.  
  1589.      If there are component libraries, they must be listed after the
  1590.      line that contains the map-file name.  No default extension is
  1591.      assumed for library files.  If the path of a library is not
  1592.      specified, it is assumed that the library is located in the
  1593.      current directory.  (CMAKE does not use the LIB environment
  1594.      variable to search for libraries.)  Except for the last library in
  1595.      the list, each library-file name must be followed by the
  1596.      character, '+'.  White space is allowed between the library-file
  1597.      name and the character,  '+'.  The last library-file name in the
  1598.      list of must not be followed by the character, '+'.  If there is
  1599.      no module-definition file, a semicolon must be placed at the end
  1600.      of the line that contains the last library-file name.
  1601.  
  1602.      If there is a module-definition file, the line that follows the
  1603.      last library must contain the module-definition-file name.  A
  1604.      semicolon may be placed at the end of the module-definition-file
  1605.      line.  However, the semicolon is not required in this case.
  1606.  
  1607.      CMAKE ignores all lines in the response file that occur after the
  1608.      line that contains the semicolon or the line that contains the
  1609.      module-definition-file name, whichever comes first.
  1610.  
  1611. ─────Example: Linking Objects───────────────────────────────────────────────
  1612.  
  1613.      command: link @test.lnk
  1614.  
  1615.      where "test.lnk" is a LINK response file with the following lines:
  1616.  
  1617.      test1.obj +
  1618.      test2.obj +
  1619.      test3.obj
  1620.      test.exe /stack:8192 ;
  1621.  
  1622.      or, if a map file is desired:
  1623.  
  1624.      test1.obj +
  1625.      test2.obj +
  1626.      test3.obj
  1627.      test.exe /stack:8192
  1628.      test.map ;
  1629.  
  1630. ─────Example: Linking with Libraries────────────────────────────────────────
  1631.  
  1632.      command: link @test.lnk
  1633.  
  1634.      where "test.lnk" is a LINK response file with the following lines:
  1635.  
  1636.      test1.obj +
  1637.      test2.obj +
  1638.      test3.obj
  1639.      test.exe /stack:8192
  1640.      NUL
  1641.      test1.lib +
  1642.      test2.lib ;
  1643.  
  1644.      or, if a map file is desired:
  1645.  
  1646.      test1.obj +
  1647.      test2.obj +
  1648.      test3.obj
  1649.      test.exe /stack:8192
  1650.      test.map
  1651.      test1.lib +
  1652.      test2.lib ;
  1653.  
  1654. ─────Example: Using a Module-Definition File────────────────────────────────
  1655.  
  1656.      command: link @test.lnk
  1657.  
  1658.      where "test.lnk" is a LINK response file with the following lines:
  1659.  
  1660.      test1.obj +
  1661.      test2.obj +
  1662.      test3.obj
  1663.      test.exe /stack:8192
  1664.      NUL
  1665.      test1.lib +
  1666.      test2.lib
  1667.      test.def  ;
  1668.  
  1669.      or, if a map file is desired:
  1670.  
  1671.      test1.obj +
  1672.      test2.obj +
  1673.      test3.obj
  1674.      test.exe /stack:8192
  1675.      test.map
  1676.      test1.lib +
  1677.      test2.lib
  1678.      test.def  ;
  1679.  
  1680. ─────Error Handling with LINK───────────────────────────────────────────────
  1681.  
  1682.      If a LINK command is required, CMAKE will add the LINK command to
  1683.      the batch file, "makefile.bat".  In addition, CMAKE will insert
  1684.      the following commands after the LINK command:
  1685.  
  1686.      if errorlevel 1 goto n_link_failed
  1687.      goto n_link_ok
  1688.      if exist executable_file erase executable_file
  1689.      goto failed
  1690.  
  1691.      This will ensure that if the LINK command fails (i.e. returns a
  1692.      nonzero value), the faulty executable that LINK may have created
  1693.      will be erased, and "makefile.bat" will terminate.  (Actually, in
  1694.      place of the prefix, 'n_', used in the batch file labels given
  1695.      above, CMAKE will use a numeric prefix (e.g. 2_link_failed) that
  1696.      is ensured to be unique across all required LINK commands.)
  1697.  
  1698. ─────Output from CMAKE for LINK─────────────────────────────────────────────
  1699.  
  1700.      Normally, CMAKE provides no information on the processing of a
  1701.      given LINK command unless the command is required.  If the command
  1702.      is required, one of the following messages will appear:
  1703.  
  1704.      EXE executable_file Does Not Exist
  1705.  
  1706.      This indicates that <executable_file> does not exist.
  1707.  
  1708.      OBJ object_file > EXE executable_file
  1709.  
  1710.      This indicates that <object_file> is newer than <executable_file>.
  1711.  
  1712.      LIB library_file > EXE executable_file
  1713.  
  1714.      This indicates that <library_file> is newer than
  1715.      <executable_file>.
  1716.  
  1717.      DEF module_definition_file > EXE executable_file
  1718.  
  1719.      This indicates that <module_definition_file> is newer than
  1720.      <executable_file>.
  1721.  
  1722. ─────Examples───────────────────────────────────────────────────────────────
  1723.  
  1724.      link        38  EXE test.exe Does Not Exist
  1725.      link        38  OBJ test.obj > EXE test.exe
  1726.      link        38  LIB test.lib > EXE test.exe
  1727.      link        38  DEF test.def > EXE test.exe
  1728.  
  1729. ─────Verbose Output from CMAKE for LINK─────────────────────────────────────
  1730.  
  1731.      When the verbose output format is selected, CMAKE lists all of the
  1732.      time stamp comparisons that it makes in route to determining if a
  1733.      given LINK command is required.
  1734.  
  1735.      For both of the examples given below, the LINK response file,
  1736.      "test.lnk", is as follows:
  1737.  
  1738.      test.obj
  1739.      test.exe /stack:16384
  1740.      test.map
  1741.      test.lib
  1742.      test.def ;
  1743.  
  1744.      Examples: LINK Not Required
  1745.                LINK Required
  1746.  
  1747. ─────Example: LINK Not Required─────────────────────────────────────────────
  1748.  
  1749.      link @test.lnk
  1750.  
  1751.            Command:      link
  1752.            Parameters:   @test.lnk
  1753.            Command Type: intrinsic
  1754.            Command ID:   2
  1755.  
  1756.            Response File:   test.lnk
  1757.            Executable File: test.exe
  1758.  
  1759.            Object File test.obj is older than Executable File
  1760.            Library File test.lib is older than Executable File
  1761.            Module-Definition File test.def is older than Executable File
  1762.  
  1763.            * not required *
  1764.  
  1765. ─────Example: LINK Required─────────────────────────────────────────────────
  1766.  
  1767.      link @test.lnk
  1768.  
  1769.            Command:      link
  1770.            Parameters:   @test.lnk
  1771.            Command Type: intrinsic
  1772.            Command ID:   2
  1773.  
  1774.            Response File:   test.lnk
  1775.            Executable File: test.exe
  1776.  
  1777.      ***** Object File test.obj is NEWER than Executable File
  1778.  
  1779.            Modified Command Line:
  1780.  
  1781.      link @test.lnk
  1782.      if errorlevel 1 goto 0_link_failed
  1783.      goto 0_link_ok
  1784.      :0_link_failed
  1785.      if exist test.exe erase test.exe
  1786.      goto failed
  1787.      :0_link_ok
  1788.  
  1789.            * REQUIRED *
  1790.  
  1791. ─────MASM───────────────────────────────────────────────────────────────────
  1792.  
  1793.      Description
  1794.  
  1795.      When is a MASM Command Required?
  1796.  
  1797.      The MASM Command Line
  1798.  
  1799.      How CMAKE Processes an Assembly-Language-Source File
  1800.  
  1801.      Switches
  1802.  
  1803.      Some Restrictions
  1804.  
  1805.      Error Handling
  1806.  
  1807.      Output from CMAKE
  1808.  
  1809.      Verbose Output from CMAKE
  1810.  
  1811. ─────Description of MASM────────────────────────────────────────────────────
  1812.  
  1813.      MASM is a program that is distributed with the Microsoft Macro
  1814.      Assembler.  In Macro Assembler versions prior to 6.00, MASM is the
  1815.      assembler itself.  In version 6.00 of the Macro Assemble, MASM
  1816.      provides a command-line interface to the assembler program,
  1817.      ML.EXE.
  1818.  
  1819. ─────When is a MASM Command Required?───────────────────────────────────────
  1820.  
  1821.      A given MASM command will be required if any of the following
  1822.      conditions is true:
  1823.  
  1824.      1. The object file does not exist.
  1825.      2. The source file is newer than the object file.
  1826.      3. There is an include file that is newer than the object file.
  1827.  
  1828.      These conditions are checked in order.  If any condition is found
  1829.      to be true, the remaining conditions are not checked.
  1830.  
  1831. ─────The MASM Command Line──────────────────────────────────────────────────
  1832.  
  1833.      Source-File Name
  1834.  
  1835.      The source-file name must be placed before the first comma on the
  1836.      command line.  Only white space may be present between the source-
  1837.      file name and the comma that follows it.  No default extension is
  1838.      assumed for the source file.  If a path is not specified, it is
  1839.      assumed that the source file is located in the current directory.
  1840.  
  1841.      Object-File Name
  1842.  
  1843.      The object-file name must be specified.  It must be placed after
  1844.      the first comma on the command line.  Only white space may be
  1845.      present between the object-file name and the comma that precedes
  1846.      it.  No default extension is assumed for the object file.  If a
  1847.      path is not specified, it is assumed that the object file is
  1848.      located in the current directory.  The object-file name may be
  1849.      followed by a comma, semicolon, or white space.
  1850.  
  1851.      Options
  1852.  
  1853.      Options may not be placed between the source-file name and the
  1854.      first comma or between the first comma and the object-file name.
  1855.  
  1856. ─────Examples───────────────────────────────────────────────────────────────
  1857.  
  1858.      command:     masm /W2 /V /Z test.asm,test.obj;
  1859.      source file: current_directory\test.asm
  1860.      object file: current_directory\test.obj
  1861.  
  1862.      command:     masm /W2 /V /Z ..\asm\test.asm,..\obj\test.obj;
  1863.      source file: ..\asm\test.asm
  1864.      object file: ..\obj\test.obj
  1865.  
  1866. ─────How CMAKE Processes an Assembly-Language-Source File───────────────────
  1867.  
  1868.      When the object file of a MASM command exists, and it is newer
  1869.      than the source file, CMAKE will process the assembly-language-
  1870.      source file in order to determine whether or not there is an
  1871.      include file that is newer than the object file.  CMAKE will
  1872.      extract include-file names from the include statements that are
  1873.      given in the assembly-language-source file.
  1874.  
  1875.      Sensitivity to Include Statements
  1876.  
  1877.      The "sensitivity to include statements" may be thought of as a
  1878.      Boolean state variable for CMAKE.  If the sensitivity to include
  1879.      statements is "on" and CMAKE encounters an include statement,
  1880.      CMAKE will check to see if the include file associated with the
  1881.      include statement is newer than the object file.  Otherwise, if
  1882.      the sensitivity to include statements is "off", CMAKE will ignore
  1883.      the include statement.
  1884.  
  1885.      By default, the sensitivity to include statements is "on".
  1886.  
  1887.      The sensitivity to include statements may be altered through the
  1888.      use of a variety of switches.
  1889.  
  1890.      For each source file, CMAKE uses the Boolean variable,
  1891.      asm_include_on, to initialize the sensitivity to include
  1892.      statements.
  1893.  
  1894.      Within a given assembly-language-source file, the following
  1895.      comments may be used to modify the sensitivity to include
  1896.      statements:
  1897.  
  1898.      ; CMAKE - INCLUDE OFF
  1899.      ; CMAKE - INCLUDE ON
  1900.  
  1901.      Locating Include Files
  1902.  
  1903.      If CMAKE does obtain an include-file name from an include
  1904.      statement, it will attempt to determine the directory in which
  1905.      the file is located.  First, CMAKE will look for the file in the
  1906.      current directory.  If the include file is not found in the
  1907.      current directory, CMAKE will look for the file in the directory
  1908.      in which the source file for the given MASM command is located.
  1909.      If the include file is not found in the source-file's directory,
  1910.      CMAKE will search the directories specified by the INCLUDE
  1911.      environment variable (if it is defined), one by one, from left to
  1912.      right.
  1913.  
  1914.      To prevent CMAKE from searching for include files in the current
  1915.      directory, use the following statement in the configuration file:
  1916.  
  1917.      search_current_dir_for_includes = no
  1918.  
  1919.      To prevent CMAKE from searching for include files in the source-
  1920.      file's directory, use the following statement in the configuration
  1921.      file:
  1922.  
  1923.      search_source_dir_for_includes = no
  1924.  
  1925.      Scanning Include Files for Include Statements
  1926.  
  1927.      By default, CMAKE does not scan include files for include
  1928.      statements.  To force CMAKE to scan include files for include
  1929.      statements, place the following statement in your configuration
  1930.      file:
  1931.  
  1932.      scan_include_files_for_includes = yes
  1933.  
  1934.      Alternatively, you may place the following commands anywhere
  1935.      within your make file (except within the body of an if statement)
  1936.      to achieve a "local" effect:
  1937.  
  1938.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  1939.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  1940.  
  1941.      When a REM statement of this type is used, all of the MASM
  1942.      commands that follow the statement will be affected.
  1943.  
  1944.      The End-of-Includes Comment
  1945.  
  1946.      If CMAKE encounters the comment:
  1947.  
  1948.      ; CMAKE - INCLUDE END
  1949.  
  1950.      while scanning an assembly-language-source file, it will stop
  1951.      processing the file, i.e. CMAKE will not read any lines in the
  1952.      source file that occur after this comment.
  1953.  
  1954.      Although it is not required, you should place this comment after
  1955.      the last include statement in any assembly-language-source file
  1956.      that will be scanned by CMAKE.  If you do this, you will reduce
  1957.      the amount of time that CMAKE takes to execute.
  1958.  
  1959.      The Procedure Used to Examine an Assembly-Language-Source File
  1960.  
  1961.      For a given MASM command, CMAKE uses the following process to
  1962.      scan the assembly-language-source file in order to determine
  1963.      whether or not there is an include file that is newer than the
  1964.      object file:
  1965.  
  1966.      A. Initialize the sensitivity to include statements.
  1967.  
  1968.      B. Read a line from the source file.
  1969.  
  1970.      C. If we are at the end of the source file
  1971.  
  1972.            Goto step G - there are no include files in this source file
  1973.            that are newer than the object file.
  1974.  
  1975.      D. Skip leading white space on the line.
  1976.  
  1977.      E. If the line begins with the comment
  1978.                 ; CMAKE - INCLUDE ON
  1979.  
  1980.                 Enable the sensitivity to include statements.
  1981.  
  1982.         Else if the line begins with the comment
  1983.                 ; CMAKE - INCLUDE OFF
  1984.  
  1985.                 Disable the sensitivity to include statements.
  1986.  
  1987.         Else if the line begins with the comment
  1988.                 ; CMAKE - INCLUDE END
  1989.  
  1990.                 Go to step G - there are no include files in this
  1991.                 source file that are newer than the object file.
  1992.  
  1993.         Else if the line begins with the token, 'include' (or
  1994.                 'INCLUDE'), and the sensitivity to include statements
  1995.                 is on
  1996.  
  1997.                 1. Skip white space following the 'include' token.
  1998.  
  1999.                 2. Copy the include-file name.
  2000.  
  2001.                 3. If the configuration data specifies that we must
  2002.                    search for include files in the current directory
  2003.  
  2004.                       Search for the include file in the current
  2005.                       directory (the full include-file name is obtained
  2006.                       by prefixing the current directory to the
  2007.                       include-file name derived from the source file).
  2008.  
  2009.                 4. If the include file has not yet been found and
  2010.                    the configuration data specifies that we must search
  2011.                    for include files in the source-file directory
  2012.  
  2013.                       Search for the include file in the source-file
  2014.                       directory (the full include-file name is obtained
  2015.                       by prefixing the source-file path to the include-
  2016.                       file name derived from the source file).
  2017.  
  2018.                 5. If the include file has not yet been found
  2019.  
  2020.                       Search for the include file in the paths given by
  2021.                       the INCLUDE environment variable.
  2022.  
  2023.                 6. If the include file is newer than the object file
  2024.  
  2025.                            Go to step G - there is an include file that
  2026.                            is newer than the object file.
  2027.  
  2028.                    Else if the configuration data specifies that we
  2029.                    must scan include files for include statements
  2030.  
  2031.                            Save the include-file name
  2032.  
  2033.      F. Go to step B
  2034.  
  2035.      G. If we must scan include files for include statements and an
  2036.         include file that is newer than the object file has not yet
  2037.         been found
  2038.  
  2039.            For each saved include file, repeat the process given above
  2040.            (beginning with step A) with the include file playing the
  2041.            role of the source file.  Continue until all saved include
  2042.            files have been examined or an include file that is newer
  2043.            than the object file is found.
  2044.  
  2045. ─────Switches for MASM──────────────────────────────────────────────────────
  2046.  
  2047.      The following switches may be used to affect the way in which
  2048.      CMAKE processes a MASM command:
  2049.  
  2050.      ; CMAKE - INCLUDE END
  2051.  
  2052.      Assembly-language-comment statement in source or include files.
  2053.      Used to indicate that there are no include statements after the
  2054.      comment.
  2055.  
  2056.      scan_include_files_for_includes
  2057.  
  2058.      Boolean variable set in the configuration file.  Used to indicate
  2059.      whether or not CMAKE should scan include files for include
  2060.      statements.  (Default: no).
  2061.  
  2062.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  2063.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  2064.  
  2065.      Make file commands.  Used to indicate whether or not CMAKE should
  2066.      scan include files for include statements.  These commands take
  2067.      precedence over the Boolean variable,
  2068.      scan_include_files_for_includes, which may be set in the
  2069.      configuration file.
  2070.  
  2071.      search_source_dir_for_includes
  2072.  
  2073.      Boolean variable set in the configuration file.  Used to indicate
  2074.      whether or not CMAKE should look for include files in the source-
  2075.      file's directory before using the INCLUDE environment variable.
  2076.      (Default: yes).
  2077.  
  2078.      search_current_dir_for_includes
  2079.  
  2080.      Boolean variable set in the configuration file.  Used to indicate
  2081.      whether or not CMAKE should look for include files in the current
  2082.      directory before using the INCLUDE environment variable.
  2083.      (Default: yes).
  2084.  
  2085.      asm_include_on
  2086.  
  2087.      Boolean variable set in the configuration file.  Used to control
  2088.      the initial sensitivity for each source file to include
  2089.      statements.  (Default: yes)
  2090.  
  2091.      ; CMAKE - INCLUDE OFF
  2092.      ; CMAKE - INCLUDE ON
  2093.  
  2094.      Assembly-language-comment statements in source or include files.
  2095.      Used to modify the sensitivity to include statements.  The effect
  2096.      of this switch is local.  It only affects the processing of the
  2097.      source file in which it is are contained.  This switch takes
  2098.      precedence over the Boolean variable, asm_include_on which may be
  2099.      set in the configuration file.
  2100.  
  2101. ─────Some Restrictions on MASM──────────────────────────────────────────────
  2102.  
  2103.      Include Statements
  2104.  
  2105.      The full path of an include file may not be given in an include
  2106.      statement (i.e. the include-file name must not begin with a drive
  2107.      or a '\' character).  However, relative paths may be used (i.e.
  2108.      the include-file name may begin with dots (..) or a directory
  2109.      name).
  2110.  
  2111. ─────Error Handling with MASM───────────────────────────────────────────────
  2112.  
  2113.      If a MASM command is required, CMAKE will add the MASM command to
  2114.      the batch file, "makefile.bat".  In addition, CMAKE will insert
  2115.      the following command after the MASM command:
  2116.  
  2117.      if errorlevel 1 goto failed
  2118.  
  2119.      This will ensure that if the MASM command fails (i.e. returns a
  2120.      nonzero value), "makefile.bat" will terminate.
  2121.  
  2122. ─────Output from CMAKE for MASM─────────────────────────────────────────────
  2123.  
  2124.      Normally, CMAKE provides no information on the processing of a
  2125.      given MASM command unless the command is required.  If the command
  2126.      is required, one of the following messages will appear:
  2127.  
  2128.      OBJ object_file Does Not Exist
  2129.  
  2130.      This indicates that <object_file> does not exist.
  2131.  
  2132.      SRC source_file > OBJ
  2133.  
  2134.      This indicates that <source_file> is newer than the object file.
  2135.  
  2136.      INC include_file > OBJ object_file
  2137.  
  2138.      This indicates that <include_file> is newer than <object_file>.
  2139.  
  2140. ─────Examples───────────────────────────────────────────────────────────────
  2141.  
  2142.      masm        37  OBJ test.obj Does Not Exist
  2143.      masm        37  SRC test.asm > OBJ
  2144.      masm        37  INC test.h > OBJ test.obj
  2145.  
  2146. ─────Verbose Output from CMAKE for MASM─────────────────────────────────────
  2147.  
  2148.      When the verbose output format is selected, CMAKE lists all of the
  2149.      time stamp comparisons that it makes in route to determining if a
  2150.      given MASM command is required.
  2151.  
  2152.      Examples: MASM Not Required
  2153.                MASM Required
  2154.  
  2155. ─────Example: MASM Not Required─────────────────────────────────────────────
  2156.  
  2157.      masm /W2 /V /Z test.asm,test.obj;
  2158.  
  2159.            Command:      masm
  2160.            Parameters:   /W2 /V /Z test.asm,test.obj;
  2161.            Command Type: intrinsic
  2162.            Command ID:   3
  2163.  
  2164.            Source File: test.asm
  2165.            Object File: test.obj
  2166.  
  2167.            Source File is older than Object File
  2168.            Include File test1.inc is older than Object File
  2169.            Include File test2.inc is older than Object File
  2170.            Include File test3.inc is older than Object File
  2171.  
  2172.            * not required *
  2173.  
  2174. ─────Example: MASM Required─────────────────────────────────────────────────
  2175.  
  2176.      masm /W2 /V /Z test.asm,test.obj;
  2177.  
  2178.            Command:      masm
  2179.            Parameters:   /W2 /V /Z test.asm,test.obj;
  2180.            Command Type: intrinsic
  2181.            Command ID:   3
  2182.  
  2183.            Source File: test.asm
  2184.            Object File: test.obj
  2185.  
  2186.            Source File is older than Object File
  2187.            Include File test1.inc is older than Object File
  2188.      ***** Include File test2.inc is NEWER than Object File
  2189.  
  2190.            Modified Command Line:
  2191.  
  2192.      masm /W2 /V /Z test.asm,test.obj;
  2193.      if errorlevel 1 goto failed
  2194.  
  2195.            * REQUIRED *
  2196.  
  2197. ─────RC─────────────────────────────────────────────────────────────────────
  2198.  
  2199.      Description
  2200.  
  2201.      Operations
  2202.  
  2203.           RC/C - Compile a Resource-Script File
  2204.  
  2205.           RC/A - Add a Resource File to an Executable File
  2206.  
  2207.           RC/W - Add the Windows Version Stamp to a File
  2208.  
  2209.           RC/CA - Compile and Add a Resource File to an Executable File
  2210.  
  2211. ─────Description of RC──────────────────────────────────────────────────────
  2212.  
  2213.      RC is a program that is distributed with the Microsoft Windows
  2214.      Software Development Kit.  It is known as the "Resource Compiler".
  2215.  
  2216. ─────RC Operations──────────────────────────────────────────────────────────
  2217.  
  2218.      The Resource Compiler may be used to perform any of the following
  2219.      four operations:
  2220.  
  2221.      Compile a Resource-Script File
  2222.  
  2223.      Compile a resource-script file to create a resource file.  We
  2224.      use the symbol, "RC/C", to represent an RC command that is used
  2225.      for this purpose.  (The suffix, '/C', stands for "Compile".)
  2226.  
  2227.      Add a Resource File to an Executable File
  2228.  
  2229.      Add a resource file to an executable file.  We use the symbol,
  2230.      "RC/A", to represent an RC command that is used for this purpose.
  2231.      (The suffix, '/A', stands for "Add".)
  2232.  
  2233.      Add the Windows Version Stamp to a File
  2234.  
  2235.      Add the Windows version stamp to a file generated by the linker.
  2236.      We use the symbol, "RC/W", to represent an RC command that is used
  2237.      for this purpose.  (The suffix, '/W', stands for "Windows".)
  2238.  
  2239.      Compile and Add a Resource File to an Executable File
  2240.  
  2241.      Compile a resource-script file to create a resource file, and add
  2242.      the resulting resource file to an executable file.  We use the
  2243.      symbol, "RC/CA", to represent an RC command that is used for this
  2244.      purpose.  (The suffix, '/CA', stands for "Compile and Add".)
  2245.  
  2246.      CMAKE supports the first three of these four operations.
  2247.  
  2248. ─────RC/C───────────────────────────────────────────────────────────────────
  2249.  
  2250.      Description                                 Helpful Hints
  2251.  
  2252.      The RC/C Command Line
  2253.  
  2254.      When is an RC/C Command Required?
  2255.  
  2256.      How CMAKE Processes a Resource-Script File
  2257.  
  2258.      Switches
  2259.  
  2260.      Some Restrictions
  2261.  
  2262.      Error Handling
  2263.  
  2264.      Output from CMAKE
  2265.  
  2266.      Verbose Output from CMAKE
  2267.  
  2268. ─────Description of RC/C────────────────────────────────────────────────────
  2269.  
  2270.      We use the symbol, "RC/C", to represent an RC command that is used
  2271.      to compile a resource-script file in order to create a resource
  2272.      file.  The suffix, '/C', stands for "Compile".
  2273.  
  2274. ─────The RC/C Command Line──────────────────────────────────────────────────
  2275.  
  2276.      Resource-Script-File Name
  2277.  
  2278.      The resource-script-file name must be the last command-line
  2279.      parameter.  No default extension is assumed for the resource-
  2280.      script file.  If the path of the resource-script file is not
  2281.      specified, it is assumed that the file is located in the current
  2282.      directory.
  2283.  
  2284.      If your editor has the capability to allow you to review compiler
  2285.      error message, and you use this feature, you should use the path
  2286.      separator, '/' (or '\\') (in place of the usual, '\'), in the
  2287.      resource-script-file name.  If this is not done, RC will drop the
  2288.      path separators from the resource-script-file name that it
  2289.      provides in error messages that pertain to that file.  The end
  2290.      result will be that your editor will be unable to open the
  2291.      resource-script file when an error occurs in that file.  CMAKE
  2292.      supports the use of, '/' and '\\', in place of the usual, '\', in
  2293.      this case.  However, the path separator, '\', should be used in
  2294.      all other paths that are specified in the make file.  (The problem
  2295.      described above is present in the "Microsoft Windows Resource
  2296.      Compiler Version 3.00 (dated 6/1/90)".  More recent versions of
  2297.      the Resource Compiler may or may not have this problem.)
  2298.  
  2299.      Resource-File Name
  2300.  
  2301.      The /fo option may be used to specify the name of the resource
  2302.      file.  If this option is used, the resource-file-name extension
  2303.      must be specified; and the path of the resource file must be
  2304.      specified, if the file is not located in the current directory.
  2305.  
  2306.      If the /fo option is not used, the resource-file name is derived
  2307.      from the resource-script-file name by replacing the resource-
  2308.      script-file-name extension with '.res'.
  2309.  
  2310.      Options
  2311.  
  2312.      Options may appear anywhere between the RC command name and the
  2313.      resource-script-file name.  The /r option (compile) must be used.
  2314.      The /r option may not be combined with another single letter
  2315.      option.  The options, /r and /fo, are not case sensitive, and '-'
  2316.      may be used in place of '/'.
  2317.  
  2318. ─────Examples───────────────────────────────────────────────────────────────
  2319.  
  2320.      command:              rc /v /r test.rc
  2321.      resource-script file: current_directory\test.rc
  2322.      resource file:        current_directory\test.res
  2323.  
  2324.      command:              rc /r /fo..\res\test.res ..\\rc\\test.rc
  2325.      resource-script file: ..\rc\test.rc
  2326.      resource file:        ..\res\test.res
  2327.  
  2328. ─────When is an RC/C Command Required?──────────────────────────────────────
  2329.  
  2330.      A given RC/C command will be required if any of the following
  2331.      conditions is true:
  2332.  
  2333.      1. The resource file does not exist.
  2334.      2. The resource-script file is newer than the resource file.
  2335.      3. There is an include file or included resource (e.g. an icon,
  2336.         bitmap, cursor, font, or user-defined resource) that is newer
  2337.         than the resource file.
  2338.  
  2339. ─────How CMAKE Processes a Resource-Script File─────────────────────────────
  2340.  
  2341.      When the resource file of an RC/C command exists, and it is newer
  2342.      than the resource-script file, CMAKE will process the resource-
  2343.      script file in order to determine whether or not there is an
  2344.      include file or an included resource (e.g. an icon, bitmap,
  2345.      cursor, font, or user-defined resource) that is newer than the
  2346.      resource file.  CMAKE will extract include-file names from
  2347.      the include statements and resource-include statements that are
  2348.      given in the resource-script file.
  2349.  
  2350.      CMAKE recognizes two forms of the include statement: local and
  2351.      system.  CMAKE also recognizes resource-include statements.
  2352.  
  2353.      Local-Include Statements
  2354.  
  2355.      The term "local-include statement" is used to refer to an include
  2356.      statement that has the form:
  2357.  
  2358.           #include "filename"
  2359.  
  2360.      and the file associated with such an include statement is said to
  2361.      be a "local-include file".
  2362.  
  2363.      System-Include Statements
  2364.  
  2365.      The term "system-include statement" is used to refer to an include
  2366.      statement that has the form:
  2367.  
  2368.           #include <filename>
  2369.  
  2370.      and the file associated with such an include statement is said to
  2371.      be a "system-include file".
  2372.  
  2373.      Resource-Include Statements
  2374.  
  2375.      The term "resource-include statement" is used to refer to a
  2376.      statement that has the form:
  2377.  
  2378.           resource_name_id resource_type_id [options] filename
  2379.  
  2380.      and the file associated with such a statement is said to be a
  2381.      "resource-include file" or an "included resource".  (Note that
  2382.      the documentation for the Microsoft Windows Software Development
  2383.      Kit refers to these statements as "single-line" statements.)  Some
  2384.      examples of resource-include statements are:
  2385.  
  2386.           myicon ICON myicon.ico
  2387.           mybitmap BITMAP mybmap.bmp
  2388.           myfont FONT myfont.fnt
  2389.           mycursor CURSOR mycur.cur
  2390.           10 400 mytext.txt
  2391.  
  2392.      Sensitivity to Local-, System-, and Resource-Include Statements
  2393.  
  2394.      The "sensitivity to local-include statements", the "sensitivity to
  2395.      system-include statements", and the "sensitivity to resource-
  2396.      include statements" may be thought of as Boolean state variables
  2397.      for CMAKE.
  2398.  
  2399.      If the sensitivity to local-include statements is "on", and CMAKE
  2400.      encounters a local-include statement, CMAKE will check to see if
  2401.      the include file associated with the include statement is newer
  2402.      than the object file.  Otherwise, if the sensitivity to local-
  2403.      include statements is "off", CMAKE will ignore the local-include
  2404.      statement.  Similar statements may be made to describe the role of
  2405.      the sensitivity to "system-" include statements and the
  2406.      sensitivity to "resource-" include statements.
  2407.  
  2408.      By default, the sensitivity to local-include statements is "on",
  2409.      the sensitivity to system-include statements is "off", and the
  2410.      sensitivity to resource-include statements is "on".
  2411.  
  2412.      The sensitivity to local-, system-, and resource-include
  2413.      statements may be altered through the use of a variety of
  2414.      switches.
  2415.  
  2416.      For each source file, CMAKE uses the Boolean variables,
  2417.      rc_include_""_on, rc_include_<>_on, and rc_include_resource_on to
  2418.      initialize the sensitivity to local-, system-, and resource-
  2419.      include statements, respectively.
  2420.  
  2421.      Within a given resource-script file, any of the following C-style
  2422.      comments may be used to modify the sensitivity to local-, system-,
  2423.      or resource-include statements:
  2424.  
  2425.      /* CMAKE - INCLUDE "" OFF */
  2426.      /* CMAKE - INCLUDE "" ON */
  2427.      /* CMAKE - INCLUDE <> OFF */
  2428.      /* CMAKE - INCLUDE <> ON */
  2429.      /* CMAKE - INCLUDE RESOURCE OFF */
  2430.      /* CMAKE - INCLUDE RESOURCE ON */
  2431.  
  2432.      Locating Include Files
  2433.  
  2434.      If CMAKE does obtain an include-file name from an include
  2435.      statement, it will attempt to determine the directory in which
  2436.      the file is located.  If the file is a local-include file or a
  2437.      resource-include file, CMAKE will look for the file in the current
  2438.      directory.  If the include file is not found in the current
  2439.      directory, CMAKE will search the directories specified by the
  2440.      INCLUDE environment variable (if it is defined), one by one, from
  2441.      left to right.  On the other hand, if the file is a system-include
  2442.      file, CMAKE will only look for the file in the directories given
  2443.      by the INCLUDE environment variable.
  2444.  
  2445.      To prevent CMAKE from searching for local-include files and
  2446.      resource-include files in the current directory, use the following
  2447.      statement in the configuration file:
  2448.  
  2449.      search_current_dir_for_includes = no
  2450.  
  2451.      Scanning Include Files for Include Statements
  2452.  
  2453.      By default, CMAKE does not scan include files for include
  2454.      statements.  To force CMAKE to scan local-include files and
  2455.      system-include files for include statements, place the following
  2456.      statement in your configuration file:
  2457.  
  2458.      scan_include_files_for_includes = yes
  2459.  
  2460.      Alternatively, you may place the following commands anywhere
  2461.      within your make file (except within the body of an if statement)
  2462.      to achieve a "local" effect:
  2463.  
  2464.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  2465.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  2466.  
  2467.      When a REM statement of this type is used, all of the RC/C
  2468.      commands that follow the statement will be affected.
  2469.  
  2470.      The End-of-Includes Comment
  2471.  
  2472.      If CMAKE encounters the comment:
  2473.  
  2474.      /* CMAKE - INCLUDE END */
  2475.  
  2476.      while scanning a resource-script file, it will stop processing the
  2477.      file, i.e. CMAKE will not read any lines in the file, that occur
  2478.      after this comment.  To learn how this switch may be used to
  2479.      affect the way in which CMAKE processes the resource-script file,
  2480.  
  2481.      See: Helpful Hints for RC/C
  2482.  
  2483.      The Procedure Used to Examine a Resource-Script File
  2484.  
  2485.      For a given RC/C command, CMAKE uses the following process to
  2486.      scan the resource-script file in order to determine whether or not
  2487.      there is an include file that is newer than the resource file:
  2488.  
  2489.      A. Initialize the sensitivity to local-include statements,
  2490.         system-include statements, and resource-include statements.
  2491.  
  2492.      B. Read a line from the resource-script file.
  2493.  
  2494.      C. If we are at the end of the resource-script file
  2495.  
  2496.            Goto step G - there are no include files or included
  2497.            resources in this resource-script file that are newer than
  2498.            the resource file.
  2499.  
  2500.      D. Skip leading white space on the line.
  2501.  
  2502.      E. If the line begins with the character, '/'
  2503.  
  2504.                 If the line begins with the comment
  2505.                         /* CMAKE - INCLUDE "" ON */
  2506.  
  2507.                         Enable the sensitivity to local-include
  2508.                         statements.
  2509.  
  2510.                 Else if the line begins with the comment
  2511.                         /* CMAKE - INCLUDE "" OFF */
  2512.  
  2513.                         Disable the sensitivity to local-include
  2514.                         statements.
  2515.  
  2516.                 Else if the line begins with the comment
  2517.                         /* CMAKE - INCLUDE <> ON */
  2518.  
  2519.                         Enable the sensitivity to system-include
  2520.                         statements.
  2521.  
  2522.                 Else if the line begins with the comment
  2523.                         /* CMAKE - INCLUDE <> OFF */
  2524.  
  2525.                         Disable the sensitivity to system-include
  2526.                         statements.
  2527.  
  2528.                 Else if the line begins with the comment
  2529.                         /* CMAKE - INCLUDE RESOURCE ON */
  2530.  
  2531.                         Enable the sensitivity to resource-include
  2532.                         statements.
  2533.  
  2534.                 Else if the line begins with the comment
  2535.                         /* CMAKE - INCLUDE RESOURCE OFF */
  2536.  
  2537.                         Disable the sensitivity to resource-include
  2538.                         statements.
  2539.  
  2540.                 Else if the line begins with the comment
  2541.                         /* CMAKE - INCLUDE END */
  2542.  
  2543.                         Go to step G - there are no include files or
  2544.                         included resources in this resource-script file
  2545.                         that are newer than the resource file.
  2546.  
  2547.         Else if the line begins with the character, '#'
  2548.  
  2549.                 1. Skip white space following the '#' character.
  2550.  
  2551.                 2. If the next token is 'include'
  2552.  
  2553.                       a. Skip white space following the 'include'
  2554.                          token.
  2555.  
  2556.                       b. If (the next character is '"' and the
  2557.                          sensitivity to local includes is on) or (the
  2558.                          next character is '<' and the sensitivity to
  2559.                          system includes is on)
  2560.  
  2561.                             i.   Copy the include-file name.
  2562.  
  2563.                             ii.  If the include file is local and the
  2564.                                  configuration data specifies that we
  2565.                                  must search for include files in the
  2566.                                  current directory
  2567.  
  2568.                                     Search for the include file in the
  2569.                                     current directory (the full
  2570.                                     include-file name is obtained by
  2571.                                     prefixing the current directory to
  2572.                                     the include-file name derived from
  2573.                                     the resource-script file).
  2574.  
  2575.                             iii. If the include file has not yet been
  2576.                                  found
  2577.  
  2578.                                     Search for the include file in the
  2579.                                     paths given by the INCLUDE
  2580.                                     environment variable.
  2581.  
  2582.                             iv.  If the include file is newer than the
  2583.                                  resource file
  2584.  
  2585.                                          Go to step G - there is an
  2586.                                          include file that is newer
  2587.                                          than the resource-script file.
  2588.  
  2589.                                  Else if the configuration data
  2590.                                  specifies that we must scan include
  2591.                                  files for include statements
  2592.  
  2593.                                          Save the include-file name.
  2594.  
  2595.         Else if the sensitivity to resource includes is on
  2596.  
  2597.                 1. Skip to the end of the line or to the first '
  2598.                    occurrence of, '//' or '/*', whichever comes first.
  2599.  
  2600.                 2. Copy the file name of the included resource from the
  2601.                    previous token (convert any occurrences of, '\\' and
  2602.                    '/', in the file name, to '\').
  2603.  
  2604.                 3. If the configuration data specifies that we must
  2605.                    search for include files in the current directory
  2606.  
  2607.                       Search for the included resource in the current
  2608.                       directory (the full file name for the included
  2609.                       resource is obtained by prefixing the current
  2610.                       directory to the resource-include-file name
  2611.                       derived from the resource-script file).
  2612.  
  2613.                 4. If the included resource has not yet been found
  2614.  
  2615.                       Search for the included resource in the paths
  2616.                       given by the INCLUDE environment variable.
  2617.  
  2618.                 5. If the included resource is newer than the
  2619.                    resource file
  2620.  
  2621.                       Go to step G - there is an included resource that
  2622.                       is newer than the resource file.
  2623.  
  2624.      F. Go to step B
  2625.  
  2626.      G. If we must scan include files for include statements and an
  2627.         include file or included resource that is newer than the
  2628.         resource file has not yet been found
  2629.  
  2630.            For each saved (local- or system-) include file, repeat the
  2631.            process given above (beginning with step A) with the include
  2632.            file playing the role of the resource-script file.  Continue
  2633.            until all saved include files have been examined, or an
  2634.            include file is found that is newer than the resource file.
  2635.  
  2636. ─────Switches for RC/C──────────────────────────────────────────────────────
  2637.  
  2638.      The following switches may be used to affect the way in which
  2639.      CMAKE processes an RC/C command:
  2640.  
  2641.      /* CMAKE - INCLUDE END */
  2642.  
  2643.      C-style comment statement in resource-script file or (local- or
  2644.      system-) include files.  Used to indicate that there are no
  2645.      local-, system-, or resource-include statements after the comment.
  2646.  
  2647.      scan_include_files_for_includes
  2648.  
  2649.      Boolean variable set in the configuration file.  Used to indicate
  2650.      whether or not CMAKE should scan include files for include
  2651.      statements.  (Default: no).
  2652.  
  2653.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  2654.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  2655.  
  2656.      Make file commands.  Used to indicate whether or not CMAKE should
  2657.      scan include files for include statements.  These commands take
  2658.      precedence over the Boolean variable,
  2659.      scan_include_files_for_includes, which may be set in the
  2660.      configuration file.
  2661.  
  2662.      search_current_dir_for_includes
  2663.  
  2664.      Boolean variable set in the configuration file.  Used to indicate
  2665.      whether or not CMAKE should look for local- and resource-include
  2666.      files in the current directory, before using the INCLUDE
  2667.      environment variable.
  2668.      (Default: yes).
  2669.  
  2670.      rc_include_""_on
  2671.      rc_include_<>_on
  2672.      rc_include_resource_on
  2673.  
  2674.      Boolean variables set in the configuration file.  Used to control
  2675.      the initial sensitivity for each resource-script file to local-,
  2676.      system-, and resource-include statements.  rc_include_""_on
  2677.      (Default: yes).  rc_include_<>_on (Default: no).
  2678.      rc_include_resource_on (Default: yes).
  2679.  
  2680.      /* CMAKE - INCLUDE "" OFF */
  2681.      /* CMAKE - INCLUDE "" ON */
  2682.      /* CMAKE - INCLUDE <> OFF */
  2683.      /* CMAKE - INCLUDE <> ON */
  2684.      /* CMAKE - INCLUDE RESOURCE OFF */
  2685.      /* CMAKE - INCLUDE RESOURCE ON */
  2686.  
  2687.      C-style comment statements in resource-script file or (local- or
  2688.      system-) include files.  Used to modify the sensitivity to local-,
  2689.      system-, and resource-include statements.  The effect of these
  2690.      switches is local.  They only affect the processing of the file
  2691.      in which they are contained.  These switches take precedence over
  2692.      the Boolean variables, rc_include_""_on, rc_include_<>_on, and
  2693.      rc_include_resource_on, which may be set in the configuration
  2694.      file.
  2695.  
  2696. ─────Some Restrictions on RC/C──────────────────────────────────────────────
  2697.  
  2698.      Preprocessor Directives
  2699.  
  2700.      #include is the only preprocessor directive that CMAKE recognizes.
  2701.      One of the implications of this is that CMAKE will not ignore
  2702.      conditionally compiled include statements based upon whether or
  2703.      not a particular identifier has been defined (either with a
  2704.      #define statement or through the use of the /D RC command-line
  2705.      option).  For example, in the following section of source code, if
  2706.      the sensitivity to local-include statements is on, CMAKE will not
  2707.      skip the include statement - regardless of whether or not the
  2708.      identifier, INCLUDE_TEST_H, has been defined:
  2709.  
  2710.      #ifdef INCLUDE_TEST_H
  2711.         #include "test.h"
  2712.      #endif
  2713.  
  2714.      Any of the following approaches could be taken to instruct CMAKE
  2715.      to ignore this include statement:
  2716.  
  2717.      #ifdef INCLUDE_TEST_H
  2718.         /* CMAKE - INCLUDE "" OFF */
  2719.         #include "test.h"
  2720.         /* CMAKE - INCLUDE "" ON */
  2721.      #endif
  2722.  
  2723.      or
  2724.  
  2725.      #ifdef INCLUDE_TEST_H
  2726.      // #include "test.h"
  2727.      #endif
  2728.  
  2729.      or
  2730.  
  2731.      #ifdef INCLUDE_TEST_H
  2732.      /* #include "test.h" */
  2733.      #endif
  2734.  
  2735.      Include-File Names
  2736.  
  2737.      The full path of a local-, system-, or resource-include file may
  2738.      not be given in an include statement (i.e. the include-file name
  2739.      must not begin with a drive or a '\' character).  However,
  2740.      relative paths may be used (i.e.  the include-file name may begin
  2741.      with dots (..) or a directory name).
  2742.  
  2743.      Note that if a path is used in the file name of an included
  2744.      resource, '/' or '\\' must be used in place of the usual path
  2745.      separator, '\'.  For example, you would use
  2746.  
  2747.      myicon ICON "..\\ico\\myicon.ico"
  2748.  
  2749.      or
  2750.  
  2751.      myicon ICON "../ico/myicon.ico"
  2752.  
  2753.      in place of
  2754.  
  2755.      myicon ICON "..\ico\myicon.ico"
  2756.  
  2757.      This restriction is imposed by the Resource Compiler, itself.
  2758.      (The behavior described above was observed in the "Microsoft
  2759.      Windows Resource Compiler Version 3.00 (dated 6/1/90)".  More
  2760.      recent versions of the Resource Compiler may or may not behave
  2761.      this way.)
  2762.  
  2763. ─────Error Handling with RC/C───────────────────────────────────────────────
  2764.  
  2765.      If an RC/C command is required, CMAKE will add the RC/C command to
  2766.      the batch file, "makefile.bat".  In addition, CMAKE will insert
  2767.      the following command after the RC/C command:
  2768.  
  2769.      if errorlevel 1 goto failed
  2770.  
  2771.      This will ensure that if the RC/C command fails (i.e. returns a
  2772.      nonzero value), "makefile.bat" will terminate.
  2773.  
  2774. ─────Output from CMAKE for RC/C─────────────────────────────────────────────
  2775.  
  2776.      Normally, CMAKE provides no information on the processing of a
  2777.      given RC/C command unless the command is required.  If the command
  2778.      is required, one of the following messages will appear:
  2779.  
  2780.      RES resource_file Does Not Exist
  2781.  
  2782.      This indicates that <resource_file> does not exist.
  2783.  
  2784.      SRC resource_script_file > RES
  2785.  
  2786.      This indicates that <resource_script_file> is newer than the
  2787.      resource file.
  2788.  
  2789.      INC include_file > RES resource_file
  2790.  
  2791.      This indicates that <include_file> is newer than <resource_file>.
  2792.  
  2793. ─────Examples───────────────────────────────────────────────────────────────
  2794.  
  2795.      rc          35  RES test.res Does Not Exist
  2796.      rc          35  SRC test.rc > RES
  2797.      rc          35  INC test.h > RES test.res
  2798.      rc          35  INC test.ico > RES test.res
  2799.  
  2800. ─────Verbose Output from CMAKE for RC/C─────────────────────────────────────
  2801.  
  2802.      When the verbose output format is selected, CMAKE lists all of the
  2803.      time stamp comparisons that it makes in route to determining if a
  2804.      given RC/C command is required.
  2805.  
  2806.      Examples: RC/C Not Required
  2807.                RC/C Required
  2808.  
  2809. ─────Example: RC/C Not Required─────────────────────────────────────────────
  2810.  
  2811.      rc /v /r test.rc
  2812.  
  2813.            Command:      rc
  2814.            Parameters:   /v /r test.rc
  2815.            Command Type: intrinsic
  2816.            Command ID:   6
  2817.  
  2818.            Operation: Compile
  2819.  
  2820.            Resource-Script File: test.rc
  2821.            Resource File:        test.res
  2822.  
  2823.            Resource-Script File is older than Resource File
  2824.            Include File test1.h is older than Resource File
  2825.            Include File test2.h is older than Resource File
  2826.            Include File test.ico is older than Resource File
  2827.  
  2828.            * not required *
  2829.  
  2830. ─────Example: RC/C Required─────────────────────────────────────────────────
  2831.  
  2832.      rc /v /r test.rc
  2833.  
  2834.            Command:      rc
  2835.            Parameters:   /v /r test.rc
  2836.            Command Type: intrinsic
  2837.            Command ID:   6
  2838.  
  2839.            Operation: Compile
  2840.  
  2841.            Resource-Script File: test.rc
  2842.            Resource File:        test.res
  2843.  
  2844.            Resource-Script File is older than Resource File
  2845.            Include File test1.h is older than Resource File
  2846.            Include File test2.h is older than Resource File
  2847.      ***** Include File test.ico is NEWER than Resource File
  2848.  
  2849.            Modified Command Line:
  2850.  
  2851.      rc /v /r test.rc
  2852.      if errorlevel 1 goto failed
  2853.  
  2854.            * REQUIRED *
  2855.  
  2856. ─────Helpful Hints for RC/C─────────────────────────────────────────────────
  2857.  
  2858.      Controlling Resource-Script File Processing
  2859.  
  2860.      When the sensitivity to resource-include statements is "on", CMAKE
  2861.      assumes that each line that it reads from the resource-script
  2862.      file, that does not begin with, '/' or '#' (and is not blank), is
  2863.      a resource-include statement.
  2864.  
  2865.      But generally, not every line in a resource-script file, that does
  2866.      not begin with, '#' or '/', will be a resource-include statement
  2867.      (there will usually be some multiple-line statements such as MENU
  2868.      or DIALOG statements present in the resource-script file as well).
  2869.  
  2870.      To prevent CMAKE from misinterpreting a line in the resource-
  2871.      script file as a resource-include statement, you could place all
  2872.      of your include statements at the top of the resource-script file,
  2873.      and place the following comment in your script file after the
  2874.      section that contains the include statements:
  2875.  
  2876.      /* CMAKE - INCLUDE END */
  2877.  
  2878.      More specifically, you could take the following approach:
  2879.  
  2880.      1. If a heading (consisting of comments) is desired in the
  2881.         resource-script file, begin each comment line with, '//'
  2882.         or '/*'.
  2883.      2. Place all #include statements and statements that include
  2884.         resources (such as icons, bitmaps, cursors, fonts, and user-
  2885.         defined resources) after any comments placed at the top of
  2886.         the resource-script file.
  2887.      3. Place the comment, "/* CMAKE - INCLUDE END */", after the
  2888.         section of the resource-script file that contains the #include
  2889.         statements and statements that are used to include resources.
  2890.  
  2891.      When the sensitivity to resource-include statements is "off",
  2892.      CMAKE ignores all lines in the resource-script file that do not
  2893.      begin with, "#include" or "/* CMAKE -".  Thus, CMAKE will not
  2894.      misinterpret any lines in the resource-script file as resource-
  2895.      include statements, when the sensitivity to resource-include
  2896.      statements is "off".  To take advantage of this fact, you could
  2897.      use the following switches in your resource-script file:
  2898.  
  2899.      /* CMAKE - INCLUDE RESOURCE OFF */
  2900.      /* CMAKE - INCLUDE RESOURCE ON */
  2901.  
  2902.      These switches may be used to turn the sensitivity to resource-
  2903.      include statements, "off" and "on", respectively.
  2904.  
  2905. ─────RC/A───────────────────────────────────────────────────────────────────
  2906.  
  2907.      Description
  2908.  
  2909.      The RC/A Command Line
  2910.  
  2911.      When is an RC/A Command Required?
  2912.  
  2913.      Error Handling
  2914.  
  2915.      Output from CMAKE
  2916.  
  2917.      Verbose Output from CMAKE
  2918.  
  2919. ─────Description of RC/A────────────────────────────────────────────────────
  2920.  
  2921.      We use the symbol, "RC/A", to represent an RC command that is used
  2922.      to add a resource file to an executable file.  The suffix, '/A',
  2923.      stands for "Add".
  2924.  
  2925. ─────The RC/A Command Line──────────────────────────────────────────────────
  2926.  
  2927.      Resource-File Name
  2928.  
  2929.      The resource-file name must be the last or second-to-last command
  2930.      -line parameter.  The resource-file name must have the extension,
  2931.      '.res'.  If the path of the resource file is not specified, it is
  2932.      assumed that the resource file is located in the current
  2933.      directory.
  2934.  
  2935.      Executable-File Name
  2936.  
  2937.      If the resource-file name is the last command-line parameter,
  2938.      the executable-file name is derived from the resource-file name
  2939.      by replacing the file extension, '.res', with '.exe'.
  2940.  
  2941.      If the resource-file name is the second to last command-line
  2942.      parameter, the executable-file name must be the last command-line
  2943.      parameter.  In this case, no default extension will be assumed for
  2944.      the executable file.  If the path of the executable file is not
  2945.      specified, it will be assumed that the executable file is located
  2946.      in the current directory.
  2947.  
  2948.      CMAKE does not recognize the /fe option which may be used to
  2949.      rename the executable file.
  2950.  
  2951. ─────Examples───────────────────────────────────────────────────────────────
  2952.  
  2953.      command:         rc /v test.res
  2954.      resource file:   current_directory\test.res
  2955.      executable file: current_directory\test.exe
  2956.  
  2957.      command:         rc /v ..\res\test.res ..\exe\test.exe
  2958.      resource file:   ..\res\test.res
  2959.      executable file: ..\exe\test.exe
  2960.  
  2961. ─────When is an RC/A Command Required?──────────────────────────────────────
  2962.  
  2963.      A given RC/A command will be required if any of the following
  2964.      conditions is true:
  2965.  
  2966.      1. A previous make-file command for which the executable file is a
  2967.         target (e.g. LINK), is required.
  2968.      2. A previous make-file command for which the resource file is a
  2969.         target (e.g. RC/C), is required.
  2970.  
  2971.      These conditions are checked in order.  If any condition is found
  2972.      to be true, the remaining conditions are not checked.
  2973.  
  2974. ─────Error Handling with RC/A───────────────────────────────────────────────
  2975.  
  2976.      If an RC/A command is required, CMAKE will add the RC/A command to
  2977.      the batch file, "makefile.bat".  In addition, CMAKE will insert
  2978.      the following commands after the RC/A command:
  2979.  
  2980.      if errorlevel 1 goto n_rc_failed
  2981.      goto n_rc_ok
  2982.      if exist executable_file erase executable_file
  2983.      goto failed
  2984.  
  2985.      This will ensure that if the RC/A command fails (i.e. returns a
  2986.      nonzero value), the faulty executable file will be erased, and
  2987.      "makefile.bat" will terminate.  (Actually, in place of the prefix,
  2988.      'n_', used in the batch file labels given above, CMAKE will use a
  2989.      numeric prefix (e.g. 2_rc_failed) that is ensured to be unique
  2990.      across all required RC commands.)
  2991.  
  2992. ─────Output from CMAKE for RC/A─────────────────────────────────────────────
  2993.  
  2994.      Normally, CMAKE provides no information on the processing
  2995.      of a given RC/A command unless the command is required.  If the
  2996.      command is required, one of the following messages will appear:
  2997.  
  2998.      EXE executable_file Has Been Updated
  2999.  
  3000.      This indicates that a previous make-file command for which
  3001.      <executable_file> is a target file (e.g. LINK), is required.
  3002.  
  3003.      RES resource_file Has Been Updated
  3004.  
  3005.      This indicates that a previous make-file command for which
  3006.      <resource_file> is a target file (e.g. RC/C), is required.
  3007.  
  3008. ─────Examples───────────────────────────────────────────────────────────────
  3009.  
  3010.      rc          37  EXE test.exe Has Been Updated
  3011.      rc          37  RES test.res Has Been Updated
  3012.  
  3013. ─────Verbose Output from CMAKE for RC/A─────────────────────────────────────
  3014.  
  3015.      When the verbose output format is selected, CMAKE lists all of the
  3016.      time stamp comparisons that it makes in route to determining if a
  3017.      given RC/A command is required.
  3018.  
  3019.      Examples: RC/A Not Required
  3020.                RC/A Required
  3021.  
  3022. ─────Example: RC/A Not Required─────────────────────────────────────────────
  3023.  
  3024.      rc /v test.res test.exe
  3025.  
  3026.            Command:      rc
  3027.            Parameters:   /v test.res test.exe
  3028.            Command Type: intrinsic
  3029.            Command ID:   6
  3030.  
  3031.            Operation: Add Resource To Executable
  3032.  
  3033.            Resource File:   test.res
  3034.            Executable File: test.exe
  3035.  
  3036.            Executable File Has Not Been Updated
  3037.            Resource File Has Not Been Updated
  3038.  
  3039.            * not required *
  3040.  
  3041. ─────Example: RC/A Required─────────────────────────────────────────────────
  3042.  
  3043.      rc /v test.res test.exe
  3044.  
  3045.            Command:      rc
  3046.            Parameters:   /v test.res test.exe
  3047.            Command Type: intrinsic
  3048.            Command ID:   6
  3049.  
  3050.            Operation: Add Resource To Executable
  3051.  
  3052.            Resource File:   test.res
  3053.            Executable File: test.exe
  3054.  
  3055.            Executable File Has Not Been Updated
  3056.      ***** Resource File Has Been Updated
  3057.  
  3058.            Modified Command Line:
  3059.  
  3060.      rc /v test.res test.exe
  3061.      if errorlevel 1 goto 0_rc_failed
  3062.      goto 0_rc_ok
  3063.      :0_rc_failed
  3064.      if exist test.exe erase test.exe
  3065.      goto failed
  3066.      :0_rc_ok
  3067.  
  3068.            * REQUIRED *
  3069.  
  3070. ─────RC/W───────────────────────────────────────────────────────────────────
  3071.  
  3072.      Description
  3073.  
  3074.      The RC/W Command Line
  3075.  
  3076.      When is an RC/W Command Required?
  3077.  
  3078.      Error Handling
  3079.  
  3080.      Output from CMAKE
  3081.  
  3082.      Verbose Output from CMAKE
  3083.  
  3084. ─────Description of RC/W────────────────────────────────────────────────────
  3085.  
  3086.      We use the symbol, "RC/W", to represent an RC command that is used
  3087.      to add the Windows version stamp to a file.  The suffix, '/W',
  3088.      stands for "Windows".
  3089.  
  3090. ─────The RC/W Command Line──────────────────────────────────────────────────
  3091.  
  3092.      We refer the file to which we would like to add the Windows
  3093.      version stamp, as the "target file".
  3094.  
  3095.      Target-File Name
  3096.  
  3097.      The target-file name must be the last command-line parameter.  If
  3098.      there are two or more command-line parameters, the second to last
  3099.      command-line parameter must be an option.  No default extension is
  3100.      assumed for the target file.  The target file may not have the
  3101.      extension, '.res'.  If the path of the target file is not
  3102.      specified, it is assumed that the target file is located in the
  3103.      current directory.
  3104.  
  3105. ─────Examples───────────────────────────────────────────────────────────────
  3106.  
  3107.      command:     rc /v test.exe
  3108.      target file: current_directory\test.exe
  3109.  
  3110.      command:     rc /v ..\dll\test.dll
  3111.      target file: ..\dll\test.dll
  3112.  
  3113.      command:     rc /v ..\drv\test.drv
  3114.      target file: ..\drv\test.drv
  3115.  
  3116. ─────When is an RC/W Command Required?──────────────────────────────────────
  3117.  
  3118.      A given RC/W command will be required if the target file of the
  3119.      RC/W command is also the target of a previous make-file command
  3120.      that is required.
  3121.  
  3122. ─────Error Handling with RC/W───────────────────────────────────────────────
  3123.  
  3124.      If an RC/W command is required, CMAKE will add the RC/W command to
  3125.      the batch file, "makefile.bat".  In addition, CMAKE will insert
  3126.      the following commands after the RC/W command:
  3127.  
  3128.      if errorlevel 1 goto n_rc_failed
  3129.      goto n_rc_ok
  3130.      if exist target_file_name erase target_file_name
  3131.      goto failed
  3132.  
  3133.      This will ensure that if the RC/W command fails (i.e. returns a
  3134.      nonzero value), the faulty target file of RC/W will be erased, and
  3135.      "makefile.bat" will terminate.  (Actually, in place of the prefix,
  3136.      'n_', used in the batch file labels given above, CMAKE will use a
  3137.      numeric prefix (e.g. 2_rc_failed) that is ensured to be unique
  3138.      across all required RC commands.)
  3139.  
  3140. ─────Output from CMAKE for RC/W─────────────────────────────────────────────
  3141.  
  3142.      Normally, CMAKE provides no information on the processing of a
  3143.      given RC/W command unless the command is required.  If the command
  3144.      is required, the following message will appear:
  3145.  
  3146.      TRG target_file Has Been Updated
  3147.  
  3148.      This indicates that a previous make-file command for which
  3149.      <target_file> is a target file (e.g. LINK), is required.
  3150.  
  3151. ─────Examples───────────────────────────────────────────────────────────────
  3152.  
  3153.      rc          39  TRG test.dll Has Been Updated
  3154.  
  3155. ─────Verbose Output from CMAKE for RC/W─────────────────────────────────────
  3156.  
  3157.      When the verbose output format is selected, CMAKE lists all of the
  3158.      time stamp comparisons that it makes in route to determining if a
  3159.      given RC/W command is required.
  3160.  
  3161.      Examples: RC/W Not Required
  3162.                RC/W Required
  3163.  
  3164. ─────Example: RC/W Not Required─────────────────────────────────────────────
  3165.  
  3166.      rc /v test.dll
  3167.  
  3168.            Command:      rc
  3169.            Parameters:   /v test.dll
  3170.            Command Type: intrinsic
  3171.            Command ID:   6
  3172.  
  3173.            Operation: Add Windows Version Stamp
  3174.  
  3175.            Target File: test.dll
  3176.  
  3177.            Target File Has Not Been Updated
  3178.  
  3179.            * not required *
  3180.  
  3181. ─────Example: RC/W Required─────────────────────────────────────────────────
  3182.  
  3183.      rc /v test.dll
  3184.  
  3185.            Command:      rc
  3186.            Parameters:   /v test.dll
  3187.            Command Type: intrinsic
  3188.            Command ID:   6
  3189.  
  3190.            Operation: Add Windows Version Stamp
  3191.  
  3192.            Target File: test.dll
  3193.  
  3194.      ***** Target File Has Been Updated
  3195.  
  3196.            Modified Command Line:
  3197.  
  3198.      rc /v test.dll
  3199.      if errorlevel 1 goto 1_rc_failed
  3200.      goto 1_rc_ok
  3201.      :1_rc_failed
  3202.      if exist test.dll erase test.dll
  3203.      goto failed
  3204.      :1_rc_ok
  3205.  
  3206.            * REQUIRED *
  3207.  
  3208. ─────RC/CA──────────────────────────────────────────────────────────────────
  3209.  
  3210.      CMAKE does not support this operation.
  3211.  
  3212. ─────REM────────────────────────────────────────────────────────────────────
  3213.  
  3214.      Description
  3215.  
  3216.      REM is an MS-DOS command.  It is used to add comments to DOS batch
  3217.      programs.
  3218.  
  3219.      When is a REM Command Required?
  3220.  
  3221.      REM commands are never required.
  3222.  
  3223.      The REM Command Line
  3224.  
  3225.      CMAKE imposes no restrictions on the REM command.
  3226.  
  3227.      Switches
  3228.  
  3229.      The following two REM commands have a special meaning to CMAKE:
  3230.  
  3231.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  3232.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  3233.  
  3234.      These commands may be used to indicate whether or not CMAKE should
  3235.      scan C, assembly-language, and resource-script include files for
  3236.      include statements.  These switches remain in effect until the end
  3237.      of the make file or until another such REM switch is encountered.
  3238.      These commands take precedence over the Boolean variable,
  3239.      scan_include_files_for_includes, which may be set in the
  3240.      configuration file.
  3241.  
  3242.      Output from CMAKE
  3243.  
  3244.      Normally, CMAKE provides no information on the processing of REM
  3245.      commands.
  3246.  
  3247.      Verbose Output from CMAKE
  3248.  
  3249.      When the verbose output format is selected, CMAKE will list each
  3250.      REM command and indicate that the command is not required.
  3251.  
  3252.      For example, if the command, "rem TEST.EXE", is used in the make
  3253.      file, CMAKE will generate the following output:
  3254.  
  3255.      rem TEST.EXE
  3256.  
  3257.            Command:      rem
  3258.            Parameters:   TEST.EXE
  3259.            Command Type: intrinsic (comment)
  3260.  
  3261.            * not required *
  3262.  
  3263. ─────SET────────────────────────────────────────────────────────────────────
  3264.  
  3265.      Description
  3266.  
  3267.      SET is an internal MS-DOS command.  It is used to display, set, or
  3268.      remove MS-DOS environment variables.
  3269.  
  3270.      When is a SET Command Required?
  3271.  
  3272.      SET commands are always required.
  3273.  
  3274.      The SET Command Line
  3275.  
  3276.      CMAKE supports the following two forms of the SET command:
  3277.  
  3278.      set
  3279.      set environment_variable_name=environment_variable_value
  3280.  
  3281.      Error Handling
  3282.  
  3283.      Ordinarily, CMAKE will insert the following command into the batch
  3284.      file, "makefile.bat", after a command that is required:
  3285.  
  3286.      if errorlevel 1 goto failed
  3287.  
  3288.      However, this is not done for the SET command because the SET
  3289.      command does not return a nonzero value when it fails.
  3290.  
  3291.      Output from CMAKE
  3292.  
  3293.      Normally, CMAKE provides the following information for every SET
  3294.      command:
  3295.  
  3296.      always required
  3297.  
  3298.      For example, if there is a SET command on line 10 of the make
  3299.      file, CMAKE will generate the following output:
  3300.  
  3301.      set         10  always required
  3302.  
  3303.      Verbose Output from CMAKE
  3304.  
  3305.      When the verbose output format is selected, CMAKE will list each
  3306.      SET command and indicate that the command is required.
  3307.  
  3308.      For example, if the command, "set include=..\h;c:\c\include",
  3309.      is used in the make file, CMAKE will generate the following
  3310.      output:
  3311.  
  3312.      set include=..\h;c:\c\include
  3313.  
  3314.            Command:      set
  3315.            Parameters:   include=..\h;c:\c\include
  3316.            Command Type: intrinsic
  3317.            Command ID:   5
  3318.  
  3319.            Environment Variable Name:  INCLUDE
  3320.            Environment Variable Value: ..\h;c:\c\include
  3321.  
  3322.            * REQUIRED *
  3323.  
  3324. ─────User-Defined Commands──────────────────────────────────────────────────
  3325.  
  3326.      Description
  3327.  
  3328.      When is a User-Defined Command Required?
  3329.  
  3330.      The Command Line for a User-Defined Command
  3331.  
  3332.      How CMAKE Processes the Command Line of a User-Defined Command
  3333.  
  3334.      Predefined Pseudofiles
  3335.  
  3336.      Error Handling
  3337.  
  3338.      Output from CMAKE
  3339.  
  3340.      Verbose Output from CMAKE
  3341.  
  3342. ─────Description of User-Defined Commands───────────────────────────────────
  3343.  
  3344.      User-defined commands are commands that the user has added to
  3345.      CMAKE's vocabulary through the use of command-definition
  3346.      statements in the configuration file.  A command-definition
  3347.      statement instructs CMAKE on how to determine if a given user-
  3348.      defined command is required.
  3349.  
  3350.      See: Command-Definition Statements
  3351.  
  3352. ─────When is a User-Defined Command Required?───────────────────────────────
  3353.  
  3354.      A given user-defined command will be required if one of the
  3355.      following conditions is true:
  3356.  
  3357.      1. At least one target file does not exist.
  3358.      2. There is a source file that is newer than some target file.
  3359.  
  3360. ─────The Command Line for a User-Defined Command────────────────────────────
  3361.  
  3362.      White space must follow all source and target-file names.
  3363.  
  3364. ─────How CMAKE Processes the Command Line of a User-Defined Command─────────
  3365.  
  3366.      The source and target files for a given user-defined command are
  3367.      extracted from the command line by using the command-definition
  3368.      configuration statement for the user-defined command.  In a way,
  3369.      the command-definition statement serves as a "prototype" for the
  3370.      user-defined command (similar to the way in which a function
  3371.      declaration can serve as a "prototype" for a given C language
  3372.      function).  The command-definition statement provides a list of
  3373.      stationary parameters and a list of floating parameters.
  3374.      Usually, each stationary and floating parameter is used to specify
  3375.      the format for a particular source or target file will be given on
  3376.      the command line for the user-defined command.  Each stationary
  3377.      and floating parameter will be of the form
  3378.  
  3379.                  parameter_prefix%file_type_code
  3380.  
  3381.      where file_type_code indicates whether the file is a source file
  3382.      or target file (note that the file may also be specified as
  3383.      neutral), and parameter_prefix is the prefix that will precede the
  3384.      file name on the command line (note that the parameter prefix may
  3385.      be null).
  3386.  
  3387.      For each command-line parameter, CMAKE scans the list of floating
  3388.      parameters (from left to right) until a floating parameter is
  3389.      found that has a prefix that matches the beginning of the current
  3390.      command-line parameter.  If a matching floating parameter is not
  3391.      found, the prefix of the current stationary parameter is compared
  3392.      with the beginning of the current command-line parameter.  (The
  3393.      current stationary parameter is the first stationary parameter in
  3394.      the list of stationary parameters that has not yet been used to
  3395.      obtain a file name from the command line.)  (CMAKE considers a
  3396.      null prefix to be a match for anything.)
  3397.  
  3398.      If a matching floating or stationary parameter is not found, the
  3399.      command-line parameter is skipped.  Otherwise, the file type
  3400.      (source, target, or neutral) is obtained from the file type code
  3401.      ('s', 't', or 'n') at the end of the matching stationary or
  3402.      floating parameter.  If the file is a neutral file, the command-
  3403.      line parameter is skipped.  If the file is a source or target
  3404.      file, CMAKE obtains the time stamp for the file.  (Actually, if it
  3405.      has already been established that the user-defined command is
  3406.      required (i.e. there is a target file that does not exist, or
  3407.      there is a source file that is newer that some target file), CMAKE
  3408.      will not obtain the time stamp of the file.)
  3409.  
  3410.      The process described above is carried out for each command-line
  3411.      parameter, until either
  3412.  
  3413.      1. all command-line parameters have been examined, or
  3414.      2. the list of floating parameters is empty and all stationary
  3415.         parameters have been used to obtain a file name from the
  3416.         command line.
  3417.  
  3418. ─────Predefined Pseudofiles for User-Defined Commands───────────────────────
  3419.  
  3420.      "start.psf"
  3421.  
  3422.      The file name, "start.psf", may be used as a source or target file
  3423.      within any user-defined command.  You may think of "start.psf" as
  3424.      a file that is created just before CMAKE begins processing the
  3425.      make file.  The sole purpose of "start.psf" is to mark this point
  3426.      in time.  (We refer to "start.psf" as a pseudofile because this
  3427.      file is never actually created.)
  3428.  
  3429. ─────Examples───────────────────────────────────────────────────────────────
  3430.  
  3431.      For each example given below, it is assumed that the following
  3432.      command-definition statement has been provided in the
  3433.      configuration file:
  3434.  
  3435.      command_definition : newcmd sp[%s %t]
  3436.  
  3437.      Using "start.psf" as a Source File
  3438.  
  3439.      The following command:
  3440.  
  3441.      newcmd start.psf test.trg
  3442.  
  3443.      will be required only if there are no required commands that occur
  3444.      before it for which "test.trg" is a target file.
  3445.  
  3446.      Using "start.psf" as a Target File
  3447.  
  3448.      The following command:
  3449.  
  3450.      newcmd test.src start.psf
  3451.  
  3452.      will be required only if there is a required command that occurs
  3453.      before it for which "test.src" is a target file.
  3454.  
  3455. ─────Error Handling with User-Defined Commands──────────────────────────────
  3456.  
  3457.      If a user-defined command is required, CMAKE will add the user-
  3458.      defined command to the batch file, "makefile.bat".  In addition,
  3459.      CMAKE will insert the following command after the user-defined
  3460.      command:
  3461.  
  3462.      if errorlevel 1 goto failed
  3463.  
  3464.      This will ensure that if the user-defined command fails (i.e.
  3465.      returns a nonzero value), "makefile.bat" will terminate.
  3466.  
  3467. ─────Output from CMAKE for User-Defined Commands────────────────────────────
  3468.  
  3469.      Normally, CMAKE provides no information on the processing of a
  3470.      given user-defined command unless the command is required.  If the
  3471.      command is required, one of the following messages will appear:
  3472.  
  3473.      TRG target_file Does Not Exist
  3474.  
  3475.      This indicates that <target_file> does not exist.
  3476.  
  3477.      SRC source_file > TRG target_file
  3478.  
  3479.      This indicates that <source_file> is newer than <target_file>.
  3480.  
  3481. ─────Examples───────────────────────────────────────────────────────────────
  3482.  
  3483.      cmd1        21  TRG test.trg Does Not Exist
  3484.      cmd2        22  SRC test.src > TRG test.trg
  3485.  
  3486. ─────Verbose Output from CMAKE for User-Defined Commands────────────────────
  3487.  
  3488.      For a user-defined command, if the verbose output format is
  3489.      selected, CMAKE will list all of the source, target, and neutral
  3490.      files that are derived from the command line.  For each file
  3491.      listed, CMAKE will indicate which stationary or floating parameter
  3492.      was used to obtain the file.
  3493.  
  3494.      For each example given below, it is assumed that the following
  3495.      command-definition statement has been provided in the
  3496.      configuration file:
  3497.  
  3498.      command_definition : newcmd sp[%s %s] fp[/o%t]
  3499.  
  3500.      Examples: User-Defined Command Not Required
  3501.                User-Defined Command Required
  3502.  
  3503. ─────Example: User-Defined Command Not Required─────────────────────────────
  3504.  
  3505.      newcmd /otest.trg test1.src test2.src
  3506.  
  3507.            Command:      newcmd
  3508.            Parameters:   /otest.trg test1.src test2.src
  3509.            Command Type: user defined
  3510.            Command ID:   2
  3511.  
  3512.            Target File:  test.trg (floating parameter 1)
  3513.            Source File:  test1.src (stationary parameter 1)
  3514.            Source File:  test2.src (stationary parameter 2)
  3515.  
  3516.            Source Files are older than Target Files
  3517.  
  3518.            * not required *
  3519.  
  3520. ─────Example: User-Defined Command Required─────────────────────────────────
  3521.  
  3522.      newcmd /otest.trg test1.src test2.src
  3523.  
  3524.            Command:      newcmd
  3525.            Parameters:   /otest.trg test1.src test2.src
  3526.            Command Type: user defined
  3527.            Command ID:   2
  3528.  
  3529.            Target File:  test.trg (floating parameter 1)
  3530.            Source File:  test1.src (stationary parameter 1)
  3531.            Source File:  test2.src (stationary parameter 2)
  3532.  
  3533.      ***** Source File test2.src is NEWER than Target File test.trg
  3534.  
  3535.            Modified Command Line:
  3536.  
  3537.      newcmd /otest.trg test1.src test2.src
  3538.      if errorlevel 1 goto failed
  3539.  
  3540.            * REQUIRED *
  3541.  
  3542. ─────Equivalent Commands────────────────────────────────────────────────────
  3543.  
  3544.      Description
  3545.  
  3546.      How CMAKE Processes an Equivalent Command
  3547.  
  3548.      Output from CMAKE
  3549.  
  3550.      Verbose Output from CMAKE
  3551.  
  3552. ─────Description of Equivalent Commands─────────────────────────────────────
  3553.  
  3554.      Equivalent commands are commands that the user has added to
  3555.      CMAKE's vocabulary through the use of command-equivalence
  3556.      statements in the configuration file.  A command-equivalence
  3557.      statement specifies that a given command should be treated exactly
  3558.      like another given intrinsic or user-defined command.
  3559.  
  3560.      See: Command-Equivalence Statements
  3561.  
  3562. ─────How CMAKE Processes an Equivalent Command──────────────────────────────
  3563.  
  3564.      A given command that has been defined to be equivalent to some
  3565.      intrinsic or user-defined command (referred to here as the
  3566.      equivalent command) is treated exactly like the equivalent
  3567.      command.  That is to say:
  3568.  
  3569.      1. The command will be required if and only if the equivalent
  3570.         command is required.
  3571.      2. Any restrictions that apply to the equivalent command will also
  3572.         apply to the given command.
  3573.      3. Any error handling (e.g. "if errorlevel 1 goto failed") that is
  3574.         used with the equivalent command, will also be used with the
  3575.         given command.
  3576.  
  3577. ─────Output from CMAKE for Equivalent Commands──────────────────────────────
  3578.  
  3579.      Normally, the output for CMAKE for the given command will be
  3580.      identical to that of the equivalent command, except that the given
  3581.      command name will appear in place of the equivalent-command name.
  3582.  
  3583. ─────Verbose Output from CMAKE for Equivalent Commands──────────────────────
  3584.  
  3585.      The verbose output format for a given command will be identical to
  3586.      that of the equivalent command, except that the name and type
  3587.      (intrinsic or user-defined) of the equivalent command will be
  3588.      provided.
  3589.  
  3590.      For each example given below, it is assumed that the following
  3591.      command-equivalence statement has been provided in the
  3592.      configuration file:
  3593.  
  3594.      command_equivalence : spasm = masm
  3595.  
  3596.      Examples: Equivalent Command Not Required
  3597.                Equivalent Command Required
  3598.  
  3599. ─────Example: Equivalent Command Not Required───────────────────────────────
  3600.  
  3601.      spasm /W2 /V /Z test.asm,test.obj;
  3602.  
  3603.            Command:      spasm
  3604.            Parameters:   /W2 /V /Z test.asm,test.obj;
  3605.            Command Type: equivalent (equivalent to intrinsic command: masm)
  3606.            Command ID:   7
  3607.  
  3608.            Source File: test.asm
  3609.            Object File: test.obj
  3610.  
  3611.            Source File is older than Object File
  3612.  
  3613.            * not required *
  3614.  
  3615. ─────Example: Equivalent Command Required───────────────────────────────────
  3616.  
  3617.      spasm /W2 /V /Z test.asm,test.obj;
  3618.  
  3619.            Command:      spasm
  3620.            Parameters:   /W2 /V /Z test.asm,test.obj;
  3621.            Command Type: equivalent (equivalent to intrinsic command: masm)
  3622.            Command ID:   7
  3623.  
  3624.            Source File: test.asm
  3625.            Object File: test.obj
  3626.  
  3627.      ***** Source File is NEWER than Object File
  3628.  
  3629.            Modified Command Line:
  3630.  
  3631.      spasm /W2 /V /Z test.asm,test.obj;
  3632.      if errorlevel 1 goto failed
  3633.  
  3634.            * REQUIRED *
  3635.  
  3636. ─────Unrecognized Commands in the Make File─────────────────────────────────
  3637.  
  3638.      Description
  3639.  
  3640.      Unrecognized commands are the commands that are not intrinsic,
  3641.      user-defined, or equivalent.
  3642.  
  3643.      When is an Unrecognized Command Required?
  3644.  
  3645.      Unrecognized commands are always required.
  3646.  
  3647.      The Command Line for an Unrecognized Command
  3648.  
  3649.      CMAKE imposes no restrictions on the command line of an
  3650.      unrecognized command.
  3651.  
  3652.      Error Handling
  3653.  
  3654.      Since unrecognized commands are required (unconditionally), CMAKE
  3655.      will add each unrecognized command to the batch file,
  3656.      "makefile.bat".  CMAKE does not insert any error handling commands
  3657.      (e.g. "if errorlevel 1 goto failed") after an unrecognized
  3658.      command.  Thus, "makefile.bat" will not terminate when an
  3659.      unrecognized command fails.
  3660.  
  3661.      Output from CMAKE
  3662.  
  3663.      Normally, CMAKE provides the following information for every
  3664.      unrecognized command:
  3665.  
  3666.      unrecognized
  3667.  
  3668.      For example, if an unrecognized command called, "whatcmd", is used
  3669.      in the make file, CMAKE will provide the following output:
  3670.  
  3671.      whatcmd     21  unrecognized
  3672.  
  3673.      Verbose Output from CMAKE
  3674.  
  3675.      When the verbose output format is selected, CMAKE will list each
  3676.      unrecognized command and indicate that the command is required.
  3677.  
  3678.      For example, if the command, "whatcmd test.src test.trg", is used
  3679.      in the make file, and "whatcmd" is an unrecognized command, CMAKE
  3680.      will generate the following output:
  3681.  
  3682.      whatcmd test.src test.trg
  3683.  
  3684.            Command:      whatcmd
  3685.            Parameters:   test.src test.trg
  3686.            Command Type: unrecognized
  3687.  
  3688.            * REQUIRED *
  3689.  
  3690. ─────The if Statement───────────────────────────────────────────────────────
  3691.  
  3692.      Description
  3693.  
  3694.      Syntax
  3695.  
  3696.      When are the Commands in the Body of an if Statement Required?
  3697.  
  3698.      Predefined Pseudofiles
  3699.  
  3700.      Error Handling
  3701.  
  3702.      Output from CMAKE
  3703.  
  3704.      Verbose Output from CMAKE
  3705.  
  3706. ─────Description of the if Statement────────────────────────────────────────
  3707.  
  3708.      The if statement is used in a make file to explicitly specify
  3709.      source/target file dependencies.  It is an extension of the
  3710.      target/dependent description blocks which are used with most
  3711.      generic make utilities.
  3712.  
  3713. ─────Syntax of the if Statement─────────────────────────────────────────────
  3714.  
  3715.      An if statement has one of the following general forms:
  3716.  
  3717.      if (   target_file_1          │   if (   target_file_1
  3718.             target_file_2          │          target_file_2
  3719.             ...                    │          ...
  3720.             target_file_m          │          target_file_m
  3721.           < source_file_1          │        < source_file_1
  3722.             source_file_2          │          source_file_2
  3723.             ...                    │          ...
  3724.             source_file_n )        │          source_file_n )
  3725.                                    │
  3726.         command                    │      {
  3727.                                    │      command_1
  3728.                                    │      command_2
  3729.                                    │      ...
  3730.                                    │      command_r
  3731.                                    │      }
  3732.  
  3733.      Within the if statement, white space is ignored (except between
  3734.      file names, where it is required).  The target-file names must be
  3735.      listed before the source-file names, and the character, '<', must
  3736.      be used to separate the set of target-file names from the set of
  3737.      source-file names.  Each command within the body of an if
  3738.      statement must appear on a separate line.  The brackets ({}) are
  3739.      required only in the case where the body of the if statement
  3740.      consists of more than one command.
  3741.  
  3742. ─────Examples───────────────────────────────────────────────────────────────
  3743.  
  3744.      /*****************************************************************
  3745.      *  The brackets, '{' and '}', are optional when the body of an
  3746.      *  if statement consists of only one command:
  3747.      *****************************************************************/
  3748.  
  3749.      if ( 1.trg < 1.src 2.src )
  3750.         echo  hello
  3751.  
  3752.      /*****************************************************************
  3753.      *  The brackets, '{' and '}', are required when the body of an
  3754.      *  if statement consists of more than one command:
  3755.      *****************************************************************/
  3756.  
  3757.      if ( 1.trg 2.trg < 1.src 2.src )
  3758.         {
  3759.         echo  hello
  3760.         echo  world
  3761.         }
  3762.  
  3763.      /*****************************************************************
  3764.      *  Since white space is ignored, the lists of source- and target-
  3765.      *  file names may be given in a variety of formats:
  3766.      *****************************************************************/
  3767.  
  3768.      if
  3769.         (
  3770.           1.trg
  3771.                 2.trg
  3772.                       < 1.src
  3773.                               2.src
  3774.                                     )
  3775.                                       {
  3776.                                       echo  hello
  3777.                                       echo  world
  3778.      }
  3779.  
  3780.      /*****************************************************************
  3781.      *  You may not place the closing bracket, '}', at the end of the
  3782.      *  last command in the body of an if statement.  The following
  3783.      *  example shows an unacceptable location for the closing bracket:
  3784.      *****************************************************************/
  3785.  
  3786.      if ( 1.trg < 1.src )
  3787.         {
  3788.         echo  hello }
  3789.  
  3790.      /*****************************************************************
  3791.      *  In this last example, CMAKE would assume that the closing
  3792.      *  bracket, '}', is part of the ECHO command line.
  3793.      *****************************************************************/
  3794.  
  3795. ─────When are the Commands in the Body of an if Statement Required?─────────
  3796.  
  3797.      The commands within the body of a given if statement will be
  3798.      required if one of the following conditions is true:
  3799.  
  3800.      1. At least one target file does not exist.
  3801.      2. There is a source file that is newer than some target file.
  3802.  
  3803. ─────Examples───────────────────────────────────────────────────────────────
  3804.  
  3805.      if ( 1.trg < 1.src 2.src )
  3806.         {
  3807.         echo  These echo commands will be required if the target file,
  3808.         echo  "1.trg", does not exist, or at least one of the source
  3809.         echo  files, "1.src" and "2.src", is newer than the target
  3810.         echo  file, "1.trg".
  3811.         }
  3812.  
  3813.      if ( 1.trg 2.trg < 1.src 2.src )
  3814.         {
  3815.         echo  These echo commands will be required if any of the
  3816.         echo  following conditions is true:
  3817.         echo.
  3818.         echo  1. The target file, "1.trg", does not exist.
  3819.         echo  2. The target file, "2.trg", does not exist.
  3820.         echo  3. The source file, "1.src", is newer than "1.trg".
  3821.         echo  4. The source file, "1.src", is newer than "2.trg".
  3822.         echo  5. The source file, "2.src", is newer than "1.trg".
  3823.         echo  6. The source file, "2.src", is newer than "2.trg".
  3824.         }
  3825.  
  3826. ─────Predefined Pseudofiles for the if Statement────────────────────────────
  3827.  
  3828.      "start.psf"
  3829.  
  3830.      The file name, "start.psf", may be used as a source or target file
  3831.      within any if statement.  You may think of "start.psf" as a file
  3832.      that is created just before CMAKE begins processing the make file.
  3833.      The sole purpose of "start.psf" is to mark this point in time.
  3834.      (We refer to "start.psf" as a pseudofile because this file is
  3835.      never actually created.)
  3836.  
  3837. ─────Examples───────────────────────────────────────────────────────────────
  3838.  
  3839.      Using "start.psf" as a Source File
  3840.  
  3841.      if (   test.trg
  3842.           < start.psf )
  3843.  
  3844.         {
  3845.         echo  These echo commands will be required only if there are no
  3846.         echo  required commands that occur before this if statement for
  3847.         echo  which "test.trg" is a target file.
  3848.         }
  3849.  
  3850.      Using "start.psf" as a Target File
  3851.  
  3852.      if (   start.psf
  3853.           < test.src  )
  3854.  
  3855.         {
  3856.         echo  These echo commands will be required only if there is a
  3857.         echo  required command that occurs before this if statement for
  3858.         echo  which "test.src" is a target file.
  3859.         }
  3860.  
  3861. ─────Error Handling with the if Statement───────────────────────────────────
  3862.  
  3863.      If the commands within the body of a given if statement are
  3864.      required, CMAKE will add all of the commands to the batch file,
  3865.      "makefile.bat".  In addition, CMAKE will insert the following
  3866.      command after each required command:
  3867.  
  3868.      if errorlevel 1 goto failed
  3869.  
  3870.      This will ensure that if any command within the body of the if
  3871.      statement fails (i.e. returns a nonzero value), "makefile.bat"
  3872.      will terminate.
  3873.  
  3874. ─────Output from CMAKE for the if Statement─────────────────────────────────
  3875.  
  3876.      Normally, CMAKE provides no information on the processing of a
  3877.      given if statement unless the commands within the body of the if
  3878.      statement are required.  If the commands are required, each of the
  3879.      commands within the body of the if statement will be listed with
  3880.      one of the following messages:
  3881.  
  3882.      TRG target_file Does Not Exist
  3883.  
  3884.      This indicates that <target_file> does not exist.
  3885.  
  3886.      SRC source_file > TRG target_file
  3887.  
  3888.      This indicates that <source_file> is newer than <target_file>.
  3889.  
  3890. ─────Examples───────────────────────────────────────────────────────────────
  3891.  
  3892.      cmd         21  TRG test.trg Does Not Exist
  3893.      cmd         21  SRC test.src > TRG test.trg
  3894.  
  3895. ─────Verbose Output from CMAKE for the if Statement─────────────────────────
  3896.  
  3897.      For each example given below, it is assumed that the following
  3898.      if statement has been given in the make file:
  3899.  
  3900.      if (   test1.trg test2.trg
  3901.           < test1.src test2.src test3.src )
  3902.  
  3903.         {
  3904.         echo hello
  3905.         echo good bye
  3906.         }
  3907.  
  3908.      Examples: Commands Not Required
  3909.                Commands Required
  3910.  
  3911. ─────Example: Commands Not Required─────────────────────────────────────────
  3912.  
  3913.      if (...)
  3914.  
  3915.            Target File: test1.trg
  3916.            Target File: test2.trg
  3917.            Source File: test1.src
  3918.            Source File: test2.src
  3919.            Source File: test3.src
  3920.  
  3921.            Source Files are older than Target Files
  3922.  
  3923.            * not required *
  3924.  
  3925. ─────Example: Commands Required─────────────────────────────────────────────
  3926.  
  3927.      if (...)
  3928.  
  3929.            Target File: test1.trg
  3930.            Target File: test2.trg
  3931.            Source File: test1.src
  3932.            Source File: test2.src
  3933.            Source File: test3.src
  3934.  
  3935.      ***** Source File test3.src is NEWER than Target File test1.trg
  3936.  
  3937.            Modified Command Line(s):
  3938.  
  3939.      echo hello
  3940.      if errorlevel 1 goto failed
  3941.      echo good bye
  3942.      if errorlevel 1 goto failed
  3943.  
  3944.            * REQUIRED *
  3945.  
  3946. ─────Comments in the Make File──────────────────────────────────────────────
  3947.  
  3948.      C-style comments (/* */) and C++-style comments (//) may be used
  3949.      to annotate a make file.  A comment is treated as a single white-
  3950.      space character, but is otherwise ignored.
  3951.  
  3952.      The comment delimiters, /* and //, are not permitted after the
  3953.      command name on a command line.
  3954.  
  3955. ─────Examples───────────────────────────────────────────────────────────────
  3956.  
  3957.      Suppose that we have a make file that consists of the following
  3958.      two commands:
  3959.  
  3960.      cl /c /W4 hello.c
  3961.      cl /c /W4 world.c
  3962.  
  3963.      We could "comment out" the command, "cl /c /W4 world.c", by adding
  3964.      comment delimiters around the command:
  3965.  
  3966.      cl /c /W4 hello.c
  3967.      /*cl /c /W4 world.c*/
  3968.  
  3969.      Another acceptable approach would be:
  3970.  
  3971.      cl /c /W4 hello.c
  3972.      /*
  3973.      cl /c /W4 world.c
  3974.      */
  3975.  
  3976.      We could also use a C++-style comment to obtain the same result:
  3977.  
  3978.      cl /c /W4 hello.c
  3979.      // cl /c /W4 world.c
  3980.  
  3981.      An unacceptable way to "comment out" the command,
  3982.      "cl /c /W4 world.c", would be:
  3983.  
  3984.      cl /c /W4 hello.c /*
  3985.      cl /c /W4 world.c
  3986.      */
  3987.  
  3988.      In this case, CMAKE would assume that the comment delimiter, '/*',
  3989.      is part of the command, "cl /c /W4 hello.c".  In fact, since '/*'
  3990.      is the last token on the command line, '/*' would be taken to be
  3991.      the source-file name for the CL command!
  3992.  
  3993.      Another unacceptable comment would be:
  3994.  
  3995.      cl /c /W4 hello.c  // This is an unacceptable comment
  3996.      cl /c /W4 world.c
  3997.  
  3998.      In this case, CMAKE would take the word, "comment", to be the
  3999.      source-file name of the command, "cl /c /W4 hello.c".
  4000.  
  4001. ─────The CMAKE Configuration File───────────────────────────────────────────
  4002.  
  4003.      Description
  4004.  
  4005.      How CMAKE Locates the Configuration File
  4006.  
  4007.      The Section Tag
  4008.  
  4009.      Statements
  4010.  
  4011.           Comments
  4012.  
  4013.           Assignment Statements
  4014.  
  4015.           Command-Definition Statements
  4016.  
  4017.           Command-Equivalence Statements
  4018.  
  4019. ─────Description of the Configuration File──────────────────────────────────
  4020.  
  4021.      A configuration file may be used with CMAKE in order to alter
  4022.      default switch settings, define new commands, and set up command
  4023.      equivalences.  You may execute CMAKE without a configuration file
  4024.      if you are satisfied with the default settings and do not need to
  4025.      enlarge CMAKE's command table.
  4026.  
  4027. ─────Example────────────────────────────────────────────────────────────────
  4028.  
  4029.      ; cmake.cfg - CMAKE configuration file
  4030.  
  4031.      [CMAKE]
  4032.  
  4033.      ; Assignment statements
  4034.      scan_include_files_for_includes = no
  4035.      search_source_dir_for_includes = yes
  4036.      search_current_dir_for_includes = yes
  4037.      c_include_""_on = yes
  4038.      c_include_<>_on = no
  4039.      asm_include_on = yes
  4040.      rc_include_""_on = yes
  4041.      rc_include_<>_on = no
  4042.      rc_include_resource_on = yes
  4043.      run_output_file = yes
  4044.      display_output_file_commands = no
  4045.      display_execution_time = yes
  4046.  
  4047.      ; Command-definition statements
  4048.      command_definition : sort sp[<%s >%t]
  4049.  
  4050.      ; Command-equivalence statements
  4051.      command_equivalence : find = sort
  4052.  
  4053. ─────How CMAKE Locates the Configuration File───────────────────────────────
  4054.  
  4055.      When CMAKE begins, it attempts to locate and load its
  4056.      configuration file.  CMAKE uses the following process to locate
  4057.      the configuration file:
  4058.  
  4059.      1. If the environment variable, CMAKE_CFG, is defined, its value
  4060.         is used for the configuration-file name.
  4061.      2. If the environment variable, CMAKE_CFG, is not defined, or the
  4062.         configuration file given by, CMAKE_CFG, does not exist,
  4063.         CMAKE looks for the file, "cmake.cfg", in the current
  4064.         directory.
  4065.      3. If "cmake.cfg" is not found in the current directory, CMAKE
  4066.         looks for "cmake.cfg" in the directory in which CMAKE.EXE is
  4067.         located.
  4068.      4. If "cmake.cfg" is not found in the directory in which CMAKE.EXE
  4069.         is located, CMAKE assumes that there is no configuration file,
  4070.         and as a result, will use default settings for all Boolean
  4071.         variables.
  4072.  
  4073.      Note that the environment variable, CMAKE_CFG, should not be
  4074.      defined with a SET command in the make file because CMAKE loads
  4075.      the configuration file before it begins processing the make file.
  4076.  
  4077.      Verbose Output from CMAKE
  4078.  
  4079.      When the verbose output format is selected, CMAKE lists the
  4080.      locations where it attempts to find the configuration file.  It
  4081.      will also indicate whether or not the configuration file has been
  4082.      found.
  4083.  
  4084.      Example:
  4085.  
  4086.      CMAKE_CFG Environment Variable: CMAKE_CFG is undefined
  4087.      Current Directory:              c:\test\cmake.cfg does not exist
  4088.      CMAKE.EXE Directory:            configuration file c:\c\cmake.cfg found
  4089.  
  4090. ─────The CMAKE Section Tag in the Configuration File────────────────────────
  4091.  
  4092.      CMAKE ignores all lines in the configuration until a line is found
  4093.      that begins with the section tag, [CMAKE].  CMAKE will process all
  4094.      lines that follow the section tag, until a line is found that
  4095.      begins with '[' (indicating the beginning of another section in
  4096.      the configuration file) or the end-of-file is reached.
  4097.  
  4098.      Because of the use of section tags, the configuration data for
  4099.      CMAKE may be placed in a file that contains initialization
  4100.      data for other applications.  For example, the configuration data
  4101.      for CMAKE could be placed in the file, "tools.ini", which is used
  4102.      with the Microsoft Editor or in the file, "win.ini", which is used
  4103.      with Microsoft Windows.  Bear in mind that if the configuration
  4104.      data for CMAKE is placed at the end of a long file, CMAKE will
  4105.      become sluggish.
  4106.  
  4107. ─────Configuration-File Statements──────────────────────────────────────────
  4108.  
  4109.      The configuration data for CMAKE consists of single-line
  4110.      statements.
  4111.  
  4112.      Leading white space is ignored on every line of the configuration
  4113.      file.
  4114.  
  4115. ─────Comments in the Configuration File─────────────────────────────────────
  4116.  
  4117.      CMAKE ignores any line in the configuration file that begins with
  4118.      the character, ';'.
  4119.  
  4120. ─────Assignment Statements in the Configuration File────────────────────────
  4121.  
  4122.      Syntax
  4123.  
  4124.      Boolean Variables
  4125.  
  4126.      Verbose Output from CMAKE
  4127.  
  4128. ─────Syntax of Assignment Statements────────────────────────────────────────
  4129.  
  4130.      Assignment statements have the following form:
  4131.  
  4132.      Boolean_variable_name = value
  4133.  
  4134.      where 'Boolean_variable_name' is the name of a Boolean variable
  4135.      and 'value' must be either yes or no.  White space is ignored
  4136.      between the variable name and the value.
  4137.  
  4138. ─────Boolean Variables──────────────────────────────────────────────────────
  4139.  
  4140.      scan_include_files_for_includes
  4141.  
  4142.      search_source_dir_for_includes
  4143.      search_current_dir_for_includes
  4144.  
  4145.      c_include_""_on
  4146.      c_include_<>_on
  4147.  
  4148.      asm_include_on
  4149.  
  4150.      rc_include_""_on
  4151.      rc_include_<>_on
  4152.      rc_include_resource_on
  4153.  
  4154.      run_output_file
  4155.  
  4156.      display_output_file_commands
  4157.      display_execution_time
  4158.  
  4159. ─────scan_include_files_for_includes────────────────────────────────────────
  4160.  
  4161.      Indicates whether or not CMAKE should scan include files for
  4162.      include statements.  The following commands, which may be used in
  4163.      the make file, take precedence over this Boolean variable:
  4164.  
  4165.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  4166.      REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  4167.  
  4168.      Default: no
  4169.  
  4170. ─────search_source_dir_for_includes─────────────────────────────────────────
  4171.  
  4172.      Indicates whether or not CMAKE should look for include files in
  4173.      the source-file's directory before using the INCLUDE environment
  4174.      variable.
  4175.  
  4176.      Default: yes
  4177.  
  4178. ─────search_current_dir_for_includes────────────────────────────────────────
  4179.  
  4180.      Indicates whether or not CMAKE should look for include files in
  4181.      the current directory before using the INCLUDE environment
  4182.      variable.
  4183.  
  4184.      Default: yes
  4185.  
  4186. ─────c_include_""_on────────────────────────────────────────────────────────
  4187.  
  4188.      Controls the initial sensitivity to local-include statements, for
  4189.      each C-source file.  Within a given C-source file, the following
  4190.      comments may be used to override the value of this Boolean
  4191.      variable:
  4192.  
  4193.      /* CMAKE - INCLUDE "" OFF */
  4194.      /* CMAKE - INCLUDE "" ON */
  4195.  
  4196.      Default: yes
  4197.  
  4198. ─────c_include_<>_on────────────────────────────────────────────────────────
  4199.  
  4200.      Controls the initial sensitivity to system-include statements, for
  4201.      each C-source file.  Within a given C-source file, the following
  4202.      comments may be used to override the value of this Boolean
  4203.      variable:
  4204.  
  4205.      /* CMAKE - INCLUDE <> OFF */
  4206.      /* CMAKE - INCLUDE <> ON */
  4207.  
  4208.      Default: no
  4209.  
  4210. ─────asm_include_on─────────────────────────────────────────────────────────
  4211.  
  4212.      Controls the initial sensitivity to include statements, for each
  4213.      assembly-language-source file.  Within a given assembly-language-
  4214.      source file, the following comments may be used to override the
  4215.      value of this Boolean variable:
  4216.  
  4217.      ; CMAKE - INCLUDE OFF
  4218.      ; CMAKE - INCLUDE ON
  4219.  
  4220.      Default: yes
  4221.  
  4222. ─────rc_include_""_on───────────────────────────────────────────────────────
  4223.  
  4224.      Controls the initial sensitivity to local-include statements, for
  4225.      each resource-script file.  Within a given resource-script file,
  4226.      the following comments may be used to override the value of this
  4227.      Boolean variable:
  4228.  
  4229.      /* CMAKE - INCLUDE "" OFF */
  4230.      /* CMAKE - INCLUDE "" ON */
  4231.  
  4232.      Default: yes
  4233.  
  4234. ─────rc_include_<>_on───────────────────────────────────────────────────────
  4235.  
  4236.      Controls the initial sensitivity to system-include statements, for
  4237.      each resource-script file.  Within a given resource-script file,
  4238.      the following comments may be used to override the value of this
  4239.      Boolean variable:
  4240.  
  4241.      /* CMAKE - INCLUDE <> OFF */
  4242.      /* CMAKE - INCLUDE <> ON */
  4243.  
  4244.      Default: no
  4245.  
  4246. ─────rc_include_resource_on─────────────────────────────────────────────────
  4247.  
  4248.      Controls the initial sensitivity to resource-include statements,
  4249.      for each resource-script file.  Within a given resource-script
  4250.      file, the following comments may be used to override the value of
  4251.      this Boolean variable:
  4252.  
  4253.      /* CMAKE - INCLUDE RESOURCE OFF */
  4254.      /* CMAKE - INCLUDE RESOURCE ON */
  4255.  
  4256.      Default: yes
  4257.  
  4258. ─────run_output_file────────────────────────────────────────────────────────
  4259.  
  4260.      Determines whether or not the batch file, "makefile.bat", is to be
  4261.      executed.  The command-line option, /n, takes precedence over this
  4262.      Boolean variable.
  4263.  
  4264.      Default: yes
  4265.  
  4266. ─────display_output_file_commands───────────────────────────────────────────
  4267.  
  4268.      Controls whether or not the commands in the batch file,
  4269.      "makefile.bat", are displayed as they are executed.  Note that the
  4270.      output from each executed command is always displayed.  This
  4271.      switch only determines whether or not the commands themselves are
  4272.      also displayed.  The value of this variable is irrelevant if the
  4273.      variable, run_output_file, is 'no'.
  4274.  
  4275.      Default: no
  4276.  
  4277. ─────display_execution_time─────────────────────────────────────────────────
  4278.  
  4279.      Controls whether or not CMAKE reports its execution time.  This
  4280.      time is the number of seconds that it takes CMAKE to create the
  4281.      batch file, "makefile.bat".  It does not include the time required
  4282.      to execute this batch file.  This time is displayed in the both
  4283.      the concise and verbose CMAKE output formats.
  4284.  
  4285.      Default: yes
  4286.  
  4287. ─────Verbose Output from CMAKE for Assignment Statements────────────────────
  4288.  
  4289.      When the verbose output format is selected, CMAKE will list each
  4290.      assignment statement that it finds in the configuration file.
  4291.  
  4292.      For example, if the assignment statement,
  4293.      "search_source_dir_for_includes = no", is used in the
  4294.      configuration file, CMAKE will generate the following output:
  4295.  
  4296.      search_source_dir_for_includes = no
  4297.  
  4298.            Command:      search_source_dir_for_includes
  4299.            Parameters:   no
  4300.            Command Type: assignment
  4301.            Command ID:   0
  4302.  
  4303. ─────Command-Definition Statements──────────────────────────────────────────
  4304.  
  4305.      Command-definition statements may be used to expand CMAKE's
  4306.      command table.  Each command-definition statement provides
  4307.      information on how to determine when a particular command is
  4308.      required.  The command-definition statement tells CMAKE which
  4309.      files, listed in the command's parameters, are source files (i.e.
  4310.      files that the command uses), and which files are target files
  4311.      (i.e. files that the command creates)
  4312.  
  4313.      Syntax
  4314.  
  4315.      The general form of the command-definition configuration statement
  4316.      is:
  4317.  
  4318.      command_definition : command_name sp[...] fp[...]
  4319.  
  4320.      White space between 'command_definition' and the command name is
  4321.      ignored.
  4322.  
  4323.      The command name is required.  Command names may be up to 8
  4324.      characters long and should not include-file-name extensions such
  4325.      as '.bat', '.com', or '.exe'.  Command names are not case
  4326.      sensitive.  There must be space between the command name and 'sp'
  4327.      (or between the command name and 'fp', if 'sp' is omitted).
  4328.  
  4329.      sp[...] and fp[...] are used to specify stationary (sp) and
  4330.      floating (fp) command parameters, respectively.  The stationary
  4331.      parameters of a command are those that always appear in a certain
  4332.      position on the command line.  Generally, floating parameters are
  4333.      those parameters that are identified by a certain option prefix
  4334.      (e.g. -fo), and may appear anywhere on the command line.  sp[...]
  4335.      and fp[...] are both optional and may appear in any order.  Each
  4336.      may be used at most once in a command-definition statement.
  4337.      The brackets, '[' and ']', are required.  A space may not be
  4338.      placed between 'sp' or 'fp' and the opening bracket, '['.  White
  4339.      space is not required between the closing bracket, ']', and 'sp'
  4340.      or 'fp' that follows the bracket.
  4341.  
  4342.      The stationary and floating parameters are specified with a
  4343.      parameter description string of tokens, where each token must be
  4344.      of the form:
  4345.  
  4346.           parameter_prefix%file_type_code
  4347.  
  4348.      The parameter description string may be up to 20 characters long.
  4349.      White space placed before the first token and after the last token
  4350.      of the parameter description string is ignored.  Space must be
  4351.      placed between any two tokens.
  4352.  
  4353.      The parameter prefix is optional.  If a prefix is given, it must
  4354.      begin with a non-white-space character and cannot contain the
  4355.      character, '%'.  The parameter prefix may contain white space.
  4356.  
  4357.      The file type delimiter, '%', is required.
  4358.  
  4359.      The file type codes are single character codes used to indicate
  4360.      whether a file is a source file, target file, or neutral.  The
  4361.      valid file type codes are
  4362.  
  4363.           's' (source)
  4364.           't' (target)
  4365.           'n' (neutral)
  4366.  
  4367.      White space may not be placed between the file type delimiter,
  4368.      '%', and file type code.
  4369.  
  4370.      The subsection entitled, "User-Defined Commands", under "The Make
  4371.      File" section of this help file describes exactly how CMAKE uses a
  4372.      command-definition statement to determine if a given command is
  4373.      required.
  4374.  
  4375.      See: User-Defined Commands
  4376.  
  4377. ─────Examples───────────────────────────────────────────────────────────────
  4378.  
  4379.      Example 1
  4380.  
  4381.      Consider the command, IMPLIB.  (IMPLIB is a utility that is
  4382.      distributed with the Microsoft C Optimizing Compiler.  It is used
  4383.      to create import libraries.)  The syntax of the IMPLIB command is:
  4384.  
  4385.      IMPLIB  import_library  module_definition_file
  4386.  
  4387.      Implib uses the module-definition file to create an import
  4388.      library.
  4389.  
  4390.      Without a command-definition statement for IMPLIB, CMAKE will not
  4391.      recognize the IMPLIB command.  In this case, since unrecognized
  4392.      commands are always required, IMPLIB would always be required.
  4393.  
  4394.      The following command-definition statement could be used to tell
  4395.      CMAKE that the IMPLIB command should only be required when the
  4396.      module-definition file is newer than the import library file.
  4397.  
  4398.      command_definition : implib sp[%t %s]
  4399.  
  4400.      This statement tells CMAKE that the IMPLIB command has two
  4401.      stationary parameters (sp), and that the first stationary
  4402.      parameter gives the name of the target file that IMPLIB creates
  4403.      (%t), and the second stationary parameter gives the name of the
  4404.      source file that IMPLIB uses (%s).
  4405.  
  4406.      Example 2
  4407.  
  4408.      Suppose the following command-definition statement is included
  4409.      in the configuration file:
  4410.  
  4411.      command_definition : cmd1 fp[/FI%s /FO%t]
  4412.  
  4413.      With this command definition in place, the following command
  4414.      (which would be placed in the make file):
  4415.  
  4416.      CMD1 /A /FOtest.obj /B /FItest.c /C
  4417.  
  4418.      will only be required when "test.obj" does not exist, or when
  4419.      "test.c" is newer than "test.obj".
  4420.  
  4421.      Example 3
  4422.  
  4423.      Not all programs allow us to specify the names of all their source
  4424.      and target files on the command line.
  4425.  
  4426.      For the sake of discussion, let REVERSE be a program that
  4427.      reverses a given text file.  Further, suppose that the output of
  4428.      the REVERSE is always called, "reversed.txt".  For example, the
  4429.      command:
  4430.  
  4431.      REVERSE test.txt
  4432.  
  4433.      would generate the file, "reversed.txt", which would be the
  4434.      reversed version of "test.txt".
  4435.  
  4436.      Since REVERSE is an unrecognized command, REVERSE will always be
  4437.      required.  We might wish to have the REVERSE command only be
  4438.      required when "test.txt" is newer than "reversed.txt".
  4439.  
  4440.      Since CMAKE cannot deduce the source and target files names from
  4441.      the REVERSE command line, we could not use a command-definition
  4442.      statement (for REVERSE) for this purpose.
  4443.  
  4444.      However, we could create a batch file called, "rev.bat", with the
  4445.      following command:
  4446.  
  4447.      REVERSE %1
  4448.  
  4449.      and supply the command-definition statement:
  4450.  
  4451.      command_definition : rev sp[%s %t]
  4452.  
  4453.      With this batch file and command definition in place, we could use
  4454.      the following command in place of reverse in our make file:
  4455.  
  4456.      REV test.txt reversed.txt
  4457.  
  4458.      This command will only be required when "reversed.txt" does not
  4459.      exist, or when "test.txt" is newer than "reversed.txt".
  4460.  
  4461.      Other Examples
  4462.  
  4463.      command_definition : sort sp[<%s >%t]
  4464.      command_definition : rp sp[%s %t %s]
  4465.      command_definition : compare sp[%s %s >%t]
  4466.  
  4467. ─────Command-Equivalence Statements─────────────────────────────────────────
  4468.  
  4469.      Like command-definition statements, command-equivalence statements
  4470.      may be used to expand CMAKE's command table.  A command-
  4471.      equivalence statement tells CMAKE that a particular command should
  4472.      be processed as if it were another command.
  4473.  
  4474.      Syntax
  4475.  
  4476.      The general form of the command-equivalence configuration
  4477.      statement is:
  4478.  
  4479.      command_equivalence : command_name = equivalent_command_name
  4480.  
  4481.      White space between 'command_equivalence' and the command name is
  4482.      ignored.  Both the command and equivalent-command names are
  4483.      required.  The names may be up to 8 characters long and should not
  4484.      include-file-name extensions such as '.bat', '.com', or '.exe'.
  4485.      The command names are not case sensitive.  White space between
  4486.      the command name and equivalent-command name is ignored.
  4487.  
  4488.      The equivalent-command name must be either an intrinsic command
  4489.      (e.g.  CL, LINK, LIB, MASM,...), or a user-defined command that
  4490.      has been defined in a previous command-definition statement.
  4491.  
  4492.      See: Equivalent Commands
  4493.  
  4494. ─────Example────────────────────────────────────────────────────────────────
  4495.  
  4496.      Suppose that for some reason you choose to use a linker called,
  4497.      NEWLINK, in place of LINK.  If NEWLINK's command-line interface is
  4498.      the same as LINK, you could use the following command-equivalence
  4499.      statement to tell CMAKE that the NEWLINK command should be handled
  4500.      as if it were a LINK command:
  4501.  
  4502.      command_equivalence : newlink = link
  4503.  
  4504. ─────Using CMAKE with Your Editor───────────────────────────────────────────
  4505.  
  4506.      BRIEF  Epsilon  The Microsoft Editor
  4507.  
  4508.      After you execute CMAKE, you should review the output of CMAKE to
  4509.      determine if CMAKE (or one of the commands that CMAKE has
  4510.      executed), has failed or generated a warning message.  To perform
  4511.      this review, you may redirect the output of CMAKE to a log file,
  4512.      and load the log file into your editor.  Many programmer's editors
  4513.      (e.g. BRIEF, Epsilon, and the Microsoft Editor) provide a
  4514.      mechanism to efficiently view all compiler error messages.  These
  4515.      editors interpret the log file in order to place you at the
  4516.      location in a source file where an error has occurred.  Using this
  4517.      technique, you can view all errors messages and correct the
  4518.      problems as you go.
  4519.  
  4520.      CMAKE uses a standard format for its error messages.  Any editor
  4521.      that can interpret the error messages that are generated by the
  4522.      program, CL, will be able to interpret the error messages that are
  4523.      generated by CMAKE.
  4524.  
  4525. ─────Using CMAKE with BRIEF─────────────────────────────────────────────────
  4526.  
  4527.      What is BRIEF?
  4528.  
  4529.      Running CMAKE from BRIEF
  4530.  
  4531.      Running CMAKE from DOS and Viewing Error Messages with BRIEF
  4532.  
  4533.      Running CMAKE in a Batch File from BRIEF
  4534.  
  4535.      Helpful Hints
  4536.  
  4537. ─────What is BRIEF?─────────────────────────────────────────────────────────
  4538.  
  4539.      BRIEF is a programmer's editor that is available from Solution
  4540.      Systems.  It supports a C-like macro language and is distributed
  4541.      with many useful macros.
  4542.  
  4543. ─────Running CMAKE from BRIEF───────────────────────────────────────────────
  4544.  
  4545.      First, you should create an appropriate set of environment
  4546.      variables of the form:
  4547.  
  4548.           BC[ext]="!CMAKE"
  4549.  
  4550.      If you would like to able to execute CMAKE while you are editing a
  4551.      file that has one of the extensions: '.c', '.h', '.mak', or
  4552.      '.lnk'; you could create the following set of environment
  4553.      variables:
  4554.  
  4555.           BCC="!CMAKE"
  4556.           BCH="!CMAKE"
  4557.           BCMAK="!CMAKE"
  4558.           BCLNK="!CMAKE"
  4559.  
  4560.      The character, '!', is used to indicate that we would like to see
  4561.      warning messages, even when CMAKE and all the commands that CMAKE
  4562.      executes, are successful (i.e. return zero).
  4563.  
  4564.      Run BRIEF and edit a file with an extension for which you have
  4565.      created an environment variable.
  4566.  
  4567.      To execute CMAKE, use the compile buffer command (Alt-F10).
  4568.  
  4569.      After CMAKE is done, you will be placed at the source-file
  4570.      location of the first error (if there are any errors).  The error
  4571.      message will be displayed in the message area at the bottom of the
  4572.      screen.
  4573.  
  4574.      Use the next_error command (Ctrl-n) to view additional error
  4575.      messages.
  4576.  
  4577.      Use the next_error 1 command (Ctrl-p) to pop up the error window.
  4578.      From this window, you may select any error that you would like to
  4579.      review.
  4580.  
  4581.      The Error-Log File
  4582.  
  4583.      If an error is found during compilation, BRIEF will create an
  4584.      error-log file.  The error-log-file name will be derived from the
  4585.      edited-file name by replacing the extension with '.err'.  For
  4586.      example, if you were editing a file called, "c:\h\test.h", when
  4587.      you initiated a compile, and there are errors, BRIEF will create an
  4588.      error-log file called, "c:\h\test.err".
  4589.  
  4590.      The error-log file is a system buffer that you may not edit.
  4591.  
  4592.      If you exit BRIEF and then restart BRIEF, you may edit the error-
  4593.      log file and use the next_error and next_error 1 commands to view
  4594.      the errors from the earlier session.
  4595.  
  4596.      If no errors are found, BRIEF will not create an error-log file.
  4597.  
  4598. ─────Running CMAKE from DOS and Viewing Error Messages with BRIEF───────────
  4599.  
  4600.      Create a batch file with the following commands:
  4601.  
  4602.           CMAKE >log.err
  4603.           B log.err -mnext_error
  4604.  
  4605.      Run the batch file from DOS.
  4606.  
  4607.      If there are any errors, you will be placed at the source-file
  4608.      location of the first error.  The error message will be displayed
  4609.      in the message area at the bottom of the screen.
  4610.  
  4611.      Use the next_error command (Ctrl-n) to view additional error
  4612.      messages.
  4613.  
  4614.      Use the next_error 1 command (Ctrl-p) to pop up the error window.
  4615.      From this window, you may select any error that you would like to
  4616.      review.
  4617.  
  4618. ─────Running CMAKE in a Batch File from BRIEF───────────────────────────────
  4619.  
  4620.      Create a batch file, "run.bat", of the form:
  4621.  
  4622.           <batch commands>
  4623.           CMAKE >log.err
  4624.           <batch commands>
  4625.  
  4626.      Record the following keystroke macro:
  4627.  
  4628.           F7                             Remember
  4629.           F10 dos "run.bat"              Execute Command
  4630.           <press any key>                To return from DOS
  4631.           Alt-e "log.err"                edit_file
  4632.           Ctrl-p                         next_error 1
  4633.           Enter                          enter
  4634.           F10                            Remember
  4635.  
  4636.      This macro will execute the batch file, "run.bat", and load the
  4637.      log file, "log.err", into BRIEF.
  4638.  
  4639.      You may use Alt-F8 and Alt-F7 to save and load the macro,
  4640.      respectively.
  4641.  
  4642.      Use F8 to playback the macro.
  4643.  
  4644.      Use the next_error command (Ctrl-n) to view each error message.
  4645.  
  4646.      If the next_error command is included in the macro, you will be
  4647.      placed at the location of the first error (if there are any
  4648.      errors).  However, the message area will not show the message of
  4649.      the first error.  The message, "Playback successful", will overlay
  4650.      the error message.
  4651.  
  4652. ─────Helpful Hints for BRIEF Users──────────────────────────────────────────
  4653.  
  4654.      Disk Swapping
  4655.  
  4656.      Viewing Previous Errors
  4657.  
  4658.      Modifying BRIEF
  4659.  
  4660.      Viewing the Error-Log File
  4661.  
  4662. ─────Disk Swapping with BRIEF───────────────────────────────────────────────
  4663.  
  4664.      If you will be executing CMAKE from within BRIEF, you should use
  4665.      the flag, M, to enable disk swapping.  This will provide more
  4666.      memory for CMAKE and the programs that CMAKE executes.  This flag
  4667.      may be added to the BFLAGS environment variable.  For example:
  4668.  
  4669.           BFLAGS=-bi120k7l256Mru100za -mJPG -mrestore
  4670.                              ^
  4671.  
  4672. ─────Viewing Previous Errors with BRIEF─────────────────────────────────────
  4673.  
  4674.      A macro consisting of the key strokes, (Ctrl-p UpArrow Enter),
  4675.      could be used to view the previous error.
  4676.  
  4677. ─────Modifying BRIEF────────────────────────────────────────────────────────
  4678.  
  4679.      The BRIEF macro file, "errorfix.cb", controls the way in which
  4680.      BRIEF handles the error-log file.  You may change this macro to
  4681.      suit your needs.
  4682.  
  4683.      For example see: Viewing the Error-Log File
  4684.  
  4685. ─────Viewing the Error-Log File with BRIEF──────────────────────────────────
  4686.  
  4687.      Most of the error messages that are listed in the error-log file
  4688.      will be of the form:
  4689.  
  4690.           file_name(line_number) : message
  4691.  
  4692.      When the file name in the error message does not begin with a
  4693.      drive letter, '/', or '\', BRIEF prefixes the path of the error-
  4694.      log file to the file name.  Because of this, if you use relative
  4695.      paths or no paths (vs. absolute paths) on your file names, you
  4696.      will have to place the error-log file in the directory from which
  4697.      you execute CMAKE.  If you would prefer to place the error file
  4698.      into another directory, make the following changes to the routine,
  4699.      "_error_info", in the BRIEF macro file, "errorfix.cb":
  4700.  
  4701.      1. Replace
  4702.                 string  error_text;
  4703.         With
  4704.                 string  error_text, curdir_string;
  4705.  
  4706.      2. Replace
  4707.                 file_name = add_to_path (substr (base_name, 1, rindex
  4708.                 base_name, substr (base_name, 3, 1)) - 1), error_file);
  4709.         With
  4710.                 getwd("", curdir_string);
  4711.                 file_name = add_to_path ( curdir_string , error_file );
  4712.  
  4713.      With this change in place, when the file name in the error message
  4714.      does not begin with a drive letter, '/', or '\', BRIEF will
  4715.      prefix the current directory to the file name.
  4716.  
  4717. ─────Using CMAKE with Epsilon───────────────────────────────────────────────
  4718.  
  4719.      What is Epsilon?
  4720.  
  4721.      Running CMAKE from Epsilon
  4722.  
  4723.      Running CMAKE from DOS and Viewing Error Messages with Epsilon
  4724.  
  4725.      Running CMAKE in a Batch File from Epsilon
  4726.  
  4727.      Helpful Hints
  4728.  
  4729. ─────What is Epsilon?───────────────────────────────────────────────────────
  4730.  
  4731.      Epsilon is a powerful programmer's editor that is available from
  4732.      Lugaru Software, Ltd.
  4733.  
  4734. ─────Running CMAKE from Epsilon─────────────────────────────────────────────
  4735.  
  4736.      Execute CMAKE with the make command:
  4737.  
  4738.           (C-U) (C-X m) CMAKE
  4739.  
  4740.      After CMAKE is done, you will be placed at the source-file
  4741.      location of the first error message (if there are any errors).
  4742.      The error message will be displayed on the dialog line at the
  4743.      bottom of the screen.
  4744.  
  4745.      Use next_error (C-X C-N) to view additional error messages.
  4746.  
  4747.      To execute CMAKE again, use the make command (C-X m) (without any
  4748.      arguments).
  4749.  
  4750.      To establish CMAKE as your default make command for future Epsilon
  4751.      sessions, use the write_state command (C-F-3).  If you do this,
  4752.      the next time you execute Epsilon, you will be able to use the
  4753.      make command (C-X m) (without any arguments) to invoke CMAKE.
  4754.  
  4755. ─────Running CMAKE from DOS and Viewing Error Messages with Epsilon─────────
  4756.  
  4757.      Record the following macro:
  4758.  
  4759.           C-X (                          start_kbd_macro
  4760.           C-X C-B process                select_buffer
  4761.           C-X C-V error.log              visit_file
  4762.           F-2 process_mode               named_command
  4763.           C-X C-N                        next_error
  4764.           C-X )                          end_kbd_macro
  4765.  
  4766.           C-X A-N view_log               name_kbd_macro
  4767.           C-F-3                          write_state
  4768.  
  4769.      Create a batch file with the following commands:
  4770.  
  4771.           CMAKE >error.log
  4772.           Epsilon -rview_log
  4773.  
  4774.      Run the batch file from DOS.
  4775.  
  4776.      If there are any errors, you will be placed at the source-file
  4777.      location of the first error.  The error message will be displayed
  4778.      on the dialog line at the bottom of the screen.
  4779.  
  4780.      Use next_error (C-X C-N) to view additional error messages.
  4781.  
  4782. ─────Running CMAKE in a Batch File from Epsilon─────────────────────────────
  4783.  
  4784.      Create a batch file, "run.bat", of the form:
  4785.  
  4786.           <batch commands>
  4787.           CMAKE
  4788.           <batch commands>
  4789.  
  4790.      Execute the batch file, "run.bat", with the following make
  4791.      command:
  4792.  
  4793.           (C-U) (C-X m) run.bat
  4794.  
  4795.      After "run.bat" is done, you will be placed at the source-file
  4796.      location of the first error (if there are any errors).  The error
  4797.      message will be displayed on the dialog line at the bottom of the
  4798.      screen.
  4799.  
  4800.      Use next_error (C-X C-N) to view additional error messages.
  4801.  
  4802.      To execute CMAKE again, use the make command (C-X m) (without any
  4803.      arguments).
  4804.  
  4805.      To establish "run.bat" as your default make command for future
  4806.      Epsilon sessions, use the write_state command (C-F-3).  If you do
  4807.      this, the next time you execute Epsilon, you will be able to use
  4808.      the make command (C-X m) (without any arguments) to invoke
  4809.      "run.bat".
  4810.  
  4811. ─────Helpful Hints for Epsilon Users────────────────────────────────────────
  4812.  
  4813.      Increasing Speed
  4814.  
  4815.      Viewing Previous Errors
  4816.  
  4817.      Clearing the Process Buffer
  4818.  
  4819.      Viewing the Error-Log File
  4820.  
  4821. ─────Increasing Speed with Epsilon──────────────────────────────────────────
  4822.  
  4823.      If you will be executing CMAKE from within Epsilon, you should use
  4824.      the -fs option to instruct Epsilon to use a RAM drive path for
  4825.      swap files.  This flag may be added to the EPSILON environment
  4826.      variable.  For example:
  4827.  
  4828.           SET EPSILON=-fsd:\temp
  4829.  
  4830. ─────Viewing Previous Errors with Epsilon───────────────────────────────────
  4831.  
  4832.      To view the previous error quickly, you may record the following
  4833.      macro:
  4834.  
  4835.           C-X (                          start_kbd_macro
  4836.           C-U -1 C-X C-N                 next_error
  4837.           C-X )                          end_kbd_macro
  4838.  
  4839.           C-X A-N previous_error         name_kbd_macro
  4840.           F-4 previous_error C-X C-P     bind_to_key
  4841.           C-F-3                          write_state
  4842.  
  4843.      This macro should be recorded after you have invoked CMAKE with
  4844.      the make command, and generated some errors.
  4845.  
  4846. ─────Clearing the Epsilon Process Buffer────────────────────────────────────
  4847.  
  4848.      The variable, clear_process_buffer, is 0 by default.  To purge
  4849.      the process buffer before each make call, set this variable to a
  4850.      nonzero value.  You may do this with the following commands:
  4851.  
  4852.           F-8 clear_process_buffer 1     set_variable
  4853.           C-F-3                          write_state
  4854.  
  4855.      If you do not set the variable, clear_process_buffer, to a nonzero
  4856.      value, all error messages from all make calls will accumulate in
  4857.      your error log.
  4858.  
  4859. ─────Viewing the Error-Log File with Epsilon────────────────────────────────
  4860.  
  4861.      Most of the error messages that are listed in the error-log file
  4862.      will be of the form:
  4863.  
  4864.           file_name(line_number) : message
  4865.  
  4866.      When the file name in the error message does not begin with a
  4867.      drive letter, '/', or '\', Epsilon prefixes the current directory
  4868.      to the file name.  Because of this, if you use relative paths or no
  4869.      paths (vs. absolute paths) on your file names, you should view the
  4870.      error-log file from the directory from which you executed CMAKE.
  4871.  
  4872. ─────Using CMAKE with The Microsoft Editor──────────────────────────────────
  4873.  
  4874.      What is the Microsoft Editor?
  4875.  
  4876.      The TMP Environment Variable
  4877.  
  4878.      Running CMAKE from the Microsoft Editor
  4879.  
  4880.      Running CMAKE from DOS and Viewing Errors with the Microsoft Editor
  4881.  
  4882.      Running CMAKE in a Batch File from the Microsoft Editor
  4883.  
  4884.      Helpful Hints
  4885.  
  4886. ─────What is the Microsoft Editor?──────────────────────────────────────────
  4887.  
  4888.      The Microsoft Editor is a programmer's editor that was distributed
  4889.      with the Microsoft C Optimizing Compiler Version 5.1 and the
  4890.      Microsoft Macro Assembler Version 5.1.  It consists of a single
  4891.      executable, M.EXE (and a supporting initialization file called,
  4892.      "tools.ini").  The Microsoft Editor is a powerful (and fast) tool
  4893.      that supports macros and extensions which may be coded in C.
  4894.  
  4895. ─────The TMP Environment Variable for the Microsoft Editor──────────────────
  4896.  
  4897.      You should set the environment variable, TMP, to establish the
  4898.      location of the error-log file "m.msg".  (The error-log file used
  4899.      by the Microsoft Editor is always called, "m.msg".)
  4900.  
  4901. ─────Running CMAKE from the Microsoft Editor────────────────────────────────
  4902.  
  4903.      First, you should add an appropriate set of commands of the form:
  4904.  
  4905.           extmake:[ext] CMAKE
  4906.  
  4907.      to the file, "tools.ini".  If you would like to able to execute
  4908.      CMAKE while you are editing a file that has one of the extensions:
  4909.      '.c', '.h', '.mak', '.lnk', or '.msg'; you could use the following
  4910.      set of commands in the your "tools.ini" file:
  4911.  
  4912.           extmake:c   CMAKE
  4913.           extmake:h   CMAKE
  4914.           extmake:mak CMAKE
  4915.           extmake:lnk CMAKE
  4916.           extmake:msg CMAKE
  4917.  
  4918.      Run the Microsoft Editor and edit a file with an extension for
  4919.      which you have added an "extmake" command to your "tools.ini"
  4920.      file.
  4921.  
  4922.      To execute CMAKE, use Arg Compile (Alt+A Shift+F3) or Argcompile
  4923.      (F5).
  4924.  
  4925.      After CMAKE is done, you will be placed at the source-file
  4926.      location of the first error (if there are any errors).  The error
  4927.      message will be displayed on the dialog line at the bottom of the
  4928.      screen.
  4929.  
  4930.      Use Compile (Shift+F3) to view additional error messages.
  4931.  
  4932. ─────Running CMAKE from DOS and Viewing Errors with the Microsoft Editor────
  4933.  
  4934.      Create a batch file with the following commands:
  4935.  
  4936.           CMAKE >%TMP%\m.msg
  4937.           M %TMP%\m.msg
  4938.  
  4939.      Run the batch file from DOS.
  4940.  
  4941.      Use Compile (Shift+F3) (repeatedly) to view each error message.
  4942.  
  4943.      Note that if "/e compile" is added to the Microsoft Editor command
  4944.      line, you will be placed at the location of the first error (if
  4945.      there are any errors), but the error message will not appear on
  4946.      the dialog line.  The Microsoft copyright message will overlay the
  4947.      error message.
  4948.  
  4949. ─────Running CMAKE in a Batch File from the Microsoft Editor────────────────
  4950.  
  4951.      Create a batch file, "run.bat", with the following commands:
  4952.  
  4953.           <batch commands>
  4954.           CMAKE >m.msg
  4955.           <batch commands>
  4956.  
  4957.      Define the following macro in your "tools.ini" file:
  4958.  
  4959.           run:=Arg "run.bat" Shell Arg "$TMP:m.msg" Setfile
  4960.           run:Alt+R
  4961.  
  4962.      This macro will execute the batch file, "run.bat", and load the
  4963.      log file, "m.msg", into the Microsoft Editor.
  4964.  
  4965.      Use Alt+R to playback the macro.
  4966.  
  4967.      Use Compile (Shift+F3) (repeatedly) to view each error message.
  4968.  
  4969.      You may use the following alternative macro, if you would like to
  4970.      avoid having to manually execute the first Compile command after
  4971.      executing the macro:
  4972.  
  4973.           run:=Arg Arg "dummy" Compile
  4974.                Arg "run.bat" Shell
  4975.                Arg "$TMP:m.msg" Setfile Compile
  4976.  
  4977.      where "dummy" is a file that does not exist.  (Remember that when
  4978.      you add this macro to the file, "tools.ini", the entire macro
  4979.      definition must be specified on one line.)  If this macro is used,
  4980.      you will be placed at the location of the first error (if there
  4981.      are any errors).  The sequence, Arg Arg "dummy" Compile, is used
  4982.      to reset the Microsoft Editor error message pointer to the
  4983.      "bottom" of the list, so that the final Compile in the "run" macro
  4984.      will bring us to the "top" of the error list.
  4985.  
  4986. ─────Helpful Hints for Users of the Microsoft Editor────────────────────────
  4987.  
  4988.      Increasing Speed
  4989.  
  4990.      A Macro to Select the Error-Log File
  4991.  
  4992.      Viewing the Error-Log File
  4993.  
  4994. ─────Increasing Speed with the Microsoft Editor─────────────────────────────
  4995.  
  4996.      To increase speed, set the TMP environment variable to a path on
  4997.      a RAM drive.
  4998.  
  4999. ─────A Macro to Select the Error-Log File with the Microsoft Editor─────────
  5000.  
  5001.      The following macro may be used to select the error-log file,
  5002.      "m.msg":
  5003.  
  5004.           select_msg:=Arg "$TMP:m.msg" Setfile
  5005.           select_msg:Shift+F2
  5006.  
  5007. ─────Viewing the Error-Log File with the Microsoft Editor───────────────────
  5008.  
  5009.      Most of the error messages that are listed in the error-log file
  5010.      will be of the form:
  5011.  
  5012.           file_name(line_number) : message
  5013.  
  5014.      When the file name in the error message does not begin with a
  5015.      drive letter, '/', or '\', the Microsoft Editor prefixes the
  5016.      current directory to the file name.  Because of this, if you use
  5017.      relative paths or no paths (vs. absolute paths) on your file
  5018.      names, you should view the error-log file from the directory from
  5019.      which you executed CMAKE.
  5020.  
  5021. ─────Optimizing Performance─────────────────────────────────────────────────
  5022.  
  5023.      Overview
  5024.  
  5025.      Use the End-of-Includes Comment in Your Source Files
  5026.  
  5027.      Help CMAKE Find Include Files Quickly
  5028.  
  5029.      Have CMAKE Put "makefile.bat" on a RAM Drive
  5030.  
  5031.      Avoid Using the Verbose Output Format for CMAKE
  5032.  
  5033.      Redirect CMAKE Output to a File on a RAM Drive
  5034.  
  5035.      Do Not Have CMAKE Scan Include Files for Includes Unnecessarily
  5036.  
  5037.      Do Not Have CMAKE Check System-Include Dependencies Unnecessarily
  5038.  
  5039.      Help CMAKE Find Configuration Data Quickly
  5040.  
  5041. ─────Overview of Optimization Techniques for CMAKE──────────────────────────
  5042.  
  5043.      There are a number of techniques that may be used to increase the
  5044.      speed of CMAKE.  Most of these techniques involve setting switches
  5045.      to ensure that CMAKE does not do more work than is necessary.
  5046.  
  5047.      The execution time that is provided by CMAKE may be used to help
  5048.      you determine how to achieve the best performance in a given
  5049.      situation.
  5050.  
  5051. ─────Use the End-of-Includes Comment in Your Source Files───────────────────
  5052.  
  5053.      Place all include statements at the top of your source files.  The
  5054.      following comments should be placed within each source file, after
  5055.      the section that contains the include statements:
  5056.  
  5057.                  ┌────────────┬───────────────────────────┐
  5058.                  │ File Types │         Comment           │
  5059.                  ├────────────┼───────────────────────────┤
  5060.                  │ .c .h .rc  │ /* CMAKE - INCLUDE END */ │
  5061.                  │ .asm       │ ; CMAKE - INCLUDE END     │
  5062.                  └────────────┴───────────────────────────┘
  5063.  
  5064.      CMAKE stops processing a given source file when an appropriate
  5065.      "end-of-includes" comment is reached.  Note that for resource-
  5066.      script files ('.rc'), the comment should be placed after all
  5067.      include statements and resource-include statements (i.e.  ICON,
  5068.      BITMAP, CURSOR, FONT, or user-defined resource statements).
  5069.  
  5070.      For many applications, if these comments are used, the execution
  5071.      time for CMAKE will be reduced by 50%.
  5072.  
  5073. ─────Help CMAKE Find Include Files Quickly──────────────────────────────────
  5074.  
  5075.      If all of your application's source files and include files are
  5076.      located in the directory from which you execute CMAKE, the include
  5077.      files will be found quickly.
  5078.  
  5079.      On the other hand, if you use the INCLUDE environment variable to
  5080.      specify the location of your application's include files, there
  5081.      will be a danger that CMAKE will waste time by first looking in
  5082.      the wrong directories too often before finally locating each
  5083.      include file.
  5084.  
  5085.      If you do not keep your include files in the source directory or
  5086.      current directory, add the following statements to your
  5087.      configuration file to insure that CMAKE will not search these
  5088.      directories for include files:
  5089.  
  5090.           search_current_dir_for_includes = no
  5091.           search_source_dir_for_includes = no
  5092.  
  5093.      For many applications, if you eliminate unnecessary searches of
  5094.      the source directory and current directory, the execution time for
  5095.      CMAKE will be reduced by 15%.
  5096.  
  5097.      You could also place all of your include files in a single
  5098.      directory, and list this directory first in your INCLUDE
  5099.      environment variable.  For many applications, if this technique is
  5100.      used, the execution time for CMAKE will be reduced by 50%.
  5101.  
  5102.      If you do not wish to place all of your application's include
  5103.      files into a single directory, you should arrange the directories
  5104.      in you INCLUDE environment variable so that the directories that
  5105.      contain most of your application's include files are listed first.
  5106.      Depending upon your situation, you might be able to save even
  5107.      more time by adding "set INCLUDE" statements to your make file in
  5108.      order to rearrange the directories "on the fly" in a way that is
  5109.      optimal for each module.
  5110.  
  5111. ─────Have CMAKE Put "makefile.bat" on a RAM Drive───────────────────────────
  5112.  
  5113.      After analyzing your make file, CMAKE creates and executes the
  5114.      batch program, "makefile.bat".  You might wish to use the CMAKE
  5115.      command-line option, /o,  to instruct CMAKE to place the file,
  5116.      "makefile.bat", on a RAM drive path.  For example, if "d:\temp"
  5117.      is a path on a RAM drive, you could execute CMAKE with the
  5118.      following command:
  5119.  
  5120.      CMAKE /od:\temp
  5121.  
  5122.      Alternatively, if the environment variable, TEMP, is set to
  5123.      "d:\temp", you could use the following command in a batch file to
  5124.      execute CMAKE:
  5125.  
  5126.      CMAKE /o%TEMP%
  5127.  
  5128.      (In these examples, we have assumed that the make file is located
  5129.      in the current directory and is called, "makefile").
  5130.  
  5131. ─────Avoid Using the Verbose Output Format for CMAKE────────────────────────
  5132.  
  5133.      The verbose output format (which is enabled with the /v option)
  5134.      is a useful debugging tool.  However, since it is quite detailed,
  5135.      the execution time for CMAKE might double when the verbose output
  5136.      format is selected.
  5137.  
  5138. ─────Redirect CMAKE Output to a File on a RAM Drive─────────────────────────
  5139.  
  5140.      If you will be redirecting the output from CMAKE to a file, place
  5141.      that file on a RAM drive.  For example, if "d:\temp" is a path on
  5142.      a RAM drive, you could execute CMAKE with the following command:
  5143.  
  5144.      CMAKE >d:\temp\cmake.log
  5145.  
  5146.      Alternatively, if the environment variable, TEMP, is set to
  5147.      "d:\temp", you could use the following command in a batch file to
  5148.      execute CMAKE:
  5149.  
  5150.      CMAKE >%TEMP%\cmake.log
  5151.  
  5152.      (In these examples, we have assumed that the make file is located
  5153.      in the current directory and is called, "makefile".)
  5154.  
  5155. ─────Do Not Have CMAKE Scan Include Files for Includes Unnecessarily────────
  5156.  
  5157.      By default, CMAKE does not scan include files for include
  5158.      statements.  This default behavior may be altered by adding the
  5159.      following statement to your configuration file:
  5160.  
  5161.           scan_include_files_for_includes = yes
  5162.  
  5163.      If you enable this switch, the execution time for CMAKE could
  5164.      quadruple!  You could reduce the impact of enabling this switch by
  5165.      using "end-of-includes" comments within your include files, or, if
  5166.      the use of include statements within include files is limited to
  5167.      only a few files, you could enable this switch as needed, by using
  5168.      the following statements in your make file:
  5169.  
  5170.           REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON
  5171.           REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES OFF
  5172.  
  5173. ─────Do Not Have CMAKE Check System-Include Dependencies Unnecessarily──────
  5174.  
  5175.      By default, CMAKE ignores system-include statements.  If you
  5176.      modify system-include files, you will not want CMAKE to ignore
  5177.      these statements (at least not all of them).  To instruct CMAKE to
  5178.      check system-include file dependencies, you could add the
  5179.      following statements to your configuration file:
  5180.  
  5181.           c_include_<>_on = yes
  5182.           rc_include_<>_on = yes
  5183.  
  5184.      If you enable these switches, the execution time for CMAKE could
  5185.      double.  A more efficient approach would be to use the following
  5186.      comments in your source files, as needed:
  5187.  
  5188.               ┌────────────┬─────────────────────────────────┐
  5189.               │ File Types │            Comment              │
  5190.               ├────────────┼─────────────────────────────────┤
  5191.               │ .c .h .rc  │ /* CMAKE - INCLUDE <> ON/OFF */ │
  5192.               └────────────┴─────────────────────────────────┘
  5193.  
  5194. ─────Help CMAKE Find Configuration Data Quickly─────────────────────────────
  5195.  
  5196.      If you place the configuration data for CMAKE at the end of a long
  5197.      file that is shared by other applications (e.g. "win.ini"), CMAKE
  5198.      will have to scan the entire file until it reaches the section
  5199.      tag, [CMAKE].  This could add a few seconds to the execution time
  5200.      for CMAKE.  To eliminate the time it takes CMAKE to locate its
  5201.      configuration data, put the data at the top of a shared file, or
  5202.      in its own file (e.g. "cmake.cfg").
  5203.  
  5204. ─────CMAKE Exit Codes───────────────────────────────────────────────────────
  5205.  
  5206.      If an error occurs before the batch program, "makefile.bat", is
  5207.      executed, CMAKE will terminate and return one of the following
  5208.      exit codes:
  5209.  
  5210.      EXIT CODE  MEANING
  5211.      ──────────────────────────────────────────────────────────────────
  5212.           0     Success
  5213.        9659     CMAKE Command-Line Error
  5214.        9660     Unable to Load Configuration Data
  5215.        9661     Make File Not Found
  5216.        9662     Unable to Create "makefile.bat"
  5217.        9663     Unable to Create Predefined Pseudofile "start.psf"
  5218.        9664     Unable to Process some Make-File Command or Statement
  5219.        9665     A Token in the Make File was Truncated
  5220.        9666     Nested Comments were Found in the Make File
  5221.        9667     Out of Memory
  5222.        9668     Unable to Flush Standard-Output-File Buffer
  5223.        9669     Unable to Run "makefile.bat"
  5224.        9670     Unable to Run QH.EXE
  5225.  
  5226.      If the batch program, "makefile.bat", is executed and one of the
  5227.      commands in "makefile.bat" fails (i.e. returns a nonzero value),
  5228.      CMAKE will return the value that was returned by the command
  5229.      that failed.
  5230.  
  5231. ─────Technical Support for CMAKE────────────────────────────────────────────
  5232.  
  5233.      You may contact the author of CMAKE (John Greschak) at
  5234.  
  5235.           [70744,1417] (CompuServe(R))
  5236.  
  5237.           212-947-1327 (Work/Home)
  5238.  
  5239.           50 West 34th St. Apt. 14B8
  5240.           NY, NY 10001
  5241.  
  5242. ─────Samples────────────────────────────────────────────────────────────────
  5243.  
  5244.      Microsoft C Optimizing Compiler
  5245.  
  5246.      Microsoft Windows Software Development Kit
  5247.  
  5248.      Microsoft Macro Assembler
  5249.  
  5250.      The MS-DOS COPY Command
  5251.  
  5252.      The if Statement
  5253.  
  5254.      Command-Definition Statements
  5255.  
  5256.      Command-Equivalence Statements
  5257.  
  5258.      The Configuration File
  5259.  
  5260. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5261.  
  5262.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5263.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5264.  
  5265.      This sample demonstrates how to use CMAKE to maintain a DOS
  5266.      application that is built with the programs: CL, LIB, and LINK.
  5267.  
  5268.      Note the Following:
  5269.  
  5270.      1. The commands (and comments) in the make file.  CMAKE will
  5271.         deduce all dependencies from these commands.
  5272.  
  5273.         See: When is a CL Command Required?
  5274.              When is a LIB Command Required?
  5275.              When is a LINK Command Required?
  5276.  
  5277.      2. The format of the LIB response file, "message.lrf".  CMAKE
  5278.         requires that a response file (of a particular form) be used
  5279.         with the LIB command.
  5280.  
  5281.         See: The LIB Command Line
  5282.  
  5283.      3. The format of the LINK response file, "greeting.lnk".  CMAKE
  5284.         requires that a response file (of a particular form) be used
  5285.         with the LINK command.
  5286.  
  5287.         See: The LINK Command Line
  5288.  
  5289.      4. The use and placement of the comment
  5290.  
  5291.         /* CMAKE - INCLUDE END */
  5292.  
  5293.         in the files, "hello.c", "world.c", and "greeting.c".
  5294.  
  5295.         In these files, this comment is placed after all #include
  5296.         statements.  Although this comment is not required in C-source
  5297.         files, it serves as an end-of-file mark for CMAKE, and thus
  5298.         prevents CMAKE from searching the entire source file for
  5299.         #include statements.
  5300.  
  5301.         See: Use the End-of-Includes Comment in Your Source Files
  5302.              Switches for CL
  5303.              How CMAKE Processes a C-Source File
  5304.  
  5305. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5306.  
  5307.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5308.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5309.  
  5310.      /*****************************************************************
  5311.      *                           MAKEFILE
  5312.      *
  5313.      *  PURPOSE: Build the following modules:
  5314.      *
  5315.      *           "hello.obj"  "message.lib"   "greeting.exe"
  5316.      *           "world.obj"  "greeting.obj"
  5317.      *
  5318.      *  NOTE: None of the comments in this make file are required.
  5319.      *        They have been provided to help you understand how CMAKE
  5320.      *        handles each command.  In other words, this make file
  5321.      *        could be reduced down to the following five commands:
  5322.      *
  5323.      *        cl /c /W4 hello.c
  5324.      *        cl /c /W4 world.c
  5325.      *        lib @message.lrf
  5326.      *        cl /c /W4 greeting.c
  5327.      *        link @greeting.lnk
  5328.      *
  5329.      *****************************************************************/
  5330.  
  5331.      /*****************************************************************
  5332.      *                           HELLO.OBJ
  5333.      *
  5334.      *  The following CL command will be executed only when one of the
  5335.      *  following conditions is true:
  5336.      *
  5337.      *  1. "hello.obj" does not exist.
  5338.      *  2. "hello.c" is newer than "hello.obj".
  5339.      *  3. "hello.h" is newer than "hello.obj".
  5340.      *
  5341.      *****************************************************************/
  5342.  
  5343.      cl /c /W4 hello.c
  5344.  
  5345.      /*****************************************************************
  5346.      *                           WORLD.OBJ
  5347.      *
  5348.      *  The following CL command will be executed only when one of the
  5349.      *  following conditions is true:
  5350.      *
  5351.      *  1. "world.obj" does not exist.
  5352.      *  2. "world.c" is newer than "world.obj".
  5353.      *  3. "world.h" is newer than "world.obj".
  5354.      *
  5355.      *****************************************************************/
  5356.  
  5357.      cl /c /W4 world.c
  5358.  
  5359.      /*****************************************************************
  5360.      *                          MESSAGE.LIB
  5361.      *
  5362.      *  The following LIB command will be executed only when one of the
  5363.      *  following conditions is true:
  5364.      *
  5365.      *  1. "message.lib" does not exist.
  5366.      *  2. "hello.obj" is newer than "message.lib".
  5367.      *  3. "world.obj" is newer than "message.lib".
  5368.      *
  5369.      *  Actually, only those objects that are newer than the library,
  5370.      *  "message.lib", will be added to the library.  For example,
  5371.      *  suppose "message.lib" exists, "hello.obj" is newer than
  5372.      *  "message.lib", and "world.obj" is older than "message.lib".
  5373.      *  In this case, only "hello.obj" must be added to the library,
  5374.      *  "message.lib".  Thus, in this case, CMAKE would execute the
  5375.      *  following command:
  5376.      *
  5377.      *  lib @message.clb
  5378.      *
  5379.      *  where "message.clb" consists of the following lines:
  5380.      *
  5381.      *  message.lib
  5382.      *  -+hello.obj ;
  5383.      *
  5384.      *****************************************************************/
  5385.  
  5386.      lib @message.lrf
  5387.  
  5388.      /*****************************************************************
  5389.      *                         GREETING.OBJ
  5390.      *
  5391.      *  The following CL command will be executed only when one of the
  5392.      *  following conditions is true:
  5393.      *
  5394.      *  1. "greeting.obj" does not exist.
  5395.      *  2. "greeting.c" is newer than "greeting.obj".
  5396.      *  3. "hello.h" is newer than "greeting.obj".
  5397.      *  4. "world.h" is newer than "greeting.obj".
  5398.      *  5. "greeting.h" is newer than "greeting.obj".
  5399.      *
  5400.      *****************************************************************/
  5401.  
  5402.      cl /c /W4 greeting.c
  5403.  
  5404.      /*****************************************************************
  5405.      *                         GREETING.EXE
  5406.      *
  5407.      *  The following LINK command will be executed only when one of
  5408.      *  the following conditions is true:
  5409.      *
  5410.      *  1. "greeting.exe" does not exist.
  5411.      *  2. "greeting.obj" is newer than "greeting.exe".
  5412.      *  3. "message.lib" is newer than "greeting.exe".
  5413.      *
  5414.      *****************************************************************/
  5415.  
  5416.      link @greeting.lnk
  5417.  
  5418. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5419.  
  5420.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5421.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5422.  
  5423.      /* greeting.c - Program to print "Hello World" */
  5424.  
  5425.      #include "hello.h"
  5426.      #include "world.h"
  5427.      #include "greeting.h"
  5428.      /* CMAKE - INCLUDE END */
  5429.  
  5430.      int main ( void )
  5431.  
  5432.      {
  5433.      print_hello ( ) ;
  5434.  
  5435.      print_world ( ) ;
  5436.  
  5437.      return ( 0 ) ;
  5438.      }
  5439.  
  5440. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5441.  
  5442.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5443.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5444.  
  5445.      /* greeting.h - Header file for greeting.c */
  5446.  
  5447.      int main ( void ) ;
  5448.  
  5449. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5450.  
  5451.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5452.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5453.  
  5454.      /* hello.c - Function to print "Hello" */
  5455.  
  5456.      #include <stdio.h>
  5457.      #include "hello.h"
  5458.      /* CMAKE - INCLUDE END */
  5459.  
  5460.      void print_hello ( void )
  5461.  
  5462.      {
  5463.      printf ( "Hello\n" ) ;
  5464.      }
  5465.  
  5466. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5467.  
  5468.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5469.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5470.  
  5471.      /* hello.h - Header file for hello.c */
  5472.  
  5473.      void print_hello ( void ) ;
  5474.  
  5475. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5476.  
  5477.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5478.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5479.  
  5480.      /* world.c - Function to print "World" */
  5481.  
  5482.      #include <stdio.h>
  5483.      #include "world.h"
  5484.      /* CMAKE - INCLUDE END */
  5485.  
  5486.      void print_world ( void )
  5487.  
  5488.      {
  5489.      printf ( "World\n" ) ;
  5490.      }
  5491.  
  5492. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5493.  
  5494.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5495.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5496.  
  5497.      /* world.h - Header file for world.c */
  5498.  
  5499.      void print_world ( void ) ;
  5500.  
  5501. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5502.  
  5503.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5504.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5505.  
  5506.      message.lib
  5507.      y
  5508.      -+hello.obj &
  5509.      -+world.obj ;
  5510.  
  5511. ─────Microsoft C Optimizing Compiler Sample─────────────────────────────────
  5512.  
  5513.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  5514.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  5515.  
  5516.      greeting.obj
  5517.      greeting.exe /stack:2048
  5518.      NUL
  5519.      message.lib ;
  5520.  
  5521. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5522.  
  5523.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5524.      makefile    hw.h  hw.dlg  hw.def
  5525.  
  5526.      This sample demonstrates how to use CMAKE to maintain a Microsoft
  5527.      Windows application that is built with the programs: CL, RC, and
  5528.      LINK.
  5529.  
  5530.      Note the Following:
  5531.  
  5532.      1. The commands (and comments) in the make file.  CMAKE will
  5533.         deduce all dependencies from these commands.
  5534.  
  5535.         See: When is a CL Command Required?
  5536.              When is an RC/C Command Required?
  5537.              When is an RC/A Command Required?
  5538.              When is a LINK Command Required?
  5539.  
  5540.      2. The format of the LINK response file, "hw.lnk".  CMAKE requires
  5541.         that a response file (of a particular form) be used with the
  5542.         LINK command.
  5543.  
  5544.         See: The LINK Command Line
  5545.  
  5546.         Since CMAKE does not use the LIB environment variable, the
  5547.         paths of the Windows libraries, "libw.lib" and "slibcew.lib"
  5548.         must be provided.
  5549.  
  5550.      3. The use and placement of the comment
  5551.  
  5552.         /* CMAKE - INCLUDE END */
  5553.  
  5554.         in the files, "hw.c" and "hw.rc".
  5555.  
  5556.         In the file, "hw.c", this comment is placed after all #include
  5557.         statements.  Although this comment is not required in C-source
  5558.         files, it serves as an end-of-file mark for CMAKE, and thus
  5559.         prevents CMAKE from searching the entire source file for
  5560.         #include statements.
  5561.  
  5562.         See: Use the End-of-Includes Comment in Your Source Files
  5563.              Switches for CL
  5564.              How CMAKE Processes a C-Source File
  5565.  
  5566.         In the file, "hw.rc", this comment is placed after all #include
  5567.         statements and resource-include statements (i.e. ICON, BITMAP,
  5568.         CURSOR, FONT, or user-defined resource statements).  This
  5569.         comment is required in this file.
  5570.  
  5571.         See: Helpful Hints for RC/C
  5572.              Switches for RC/C
  5573.              How CMAKE Processes a Resource-Script File
  5574.              Use the End-of-Includes Comment in Your Source Files
  5575.  
  5576. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5577.  
  5578.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5579.      makefile    hw.h  hw.dlg  hw.def
  5580.  
  5581.      /*****************************************************************
  5582.      *                           MAKEFILE
  5583.      *
  5584.      *  PURPOSE: Build the following modules:
  5585.      *
  5586.      *           "hw.res"  "hw.exe"
  5587.      *           "hw.obj"
  5588.      *
  5589.      *  NOTE: None of the comments in this make file are required.
  5590.      *        They have been provided to help you understand how CMAKE
  5591.      *        handles each command.  In other words, this make file
  5592.      *        could be reduced down to the following four commands:
  5593.      *
  5594.      *        rc /r hw.rc
  5595.      *        cl /c /AS /Gsw /Oas /Zpe hw.c
  5596.      *        link @hw.lnk
  5597.      *        rc hw.res
  5598.      *
  5599.      *****************************************************************/
  5600.  
  5601.      /*****************************************************************
  5602.      *                            HW.RES
  5603.      *
  5604.      *  The following RC compile command will be executed only when one
  5605.      *  of the following conditions is true:
  5606.      *
  5607.      *  1. "hw.res" does not exist.
  5608.      *  2. "hw.rc" is newer than "hw.res".
  5609.      *  3. "hw.h" is newer than "hw.res".
  5610.      *  4. "hw.ico" is newer than "hw.res".
  5611.      *  5. "hw.dlg" is newer than "hw.res".
  5612.      *
  5613.      *****************************************************************/
  5614.  
  5615.      rc /r hw.rc
  5616.  
  5617.      /*****************************************************************
  5618.      *                            HW.OBJ
  5619.      *
  5620.      *  The following CL command will be executed only when one of the
  5621.      *  following conditions is true:
  5622.      *
  5623.      *  1. "hw.obj" does not exist.
  5624.      *  2. "hw.c" is newer than "hw.obj".
  5625.      *  3. "hw.h" is newer than "hw.obj".
  5626.      *
  5627.      *****************************************************************/
  5628.  
  5629.      cl /c /AS /Gsw /Oas /Zpe hw.c
  5630.  
  5631.      /*****************************************************************
  5632.      *                            HW.EXE
  5633.      *
  5634.      *  The following LINK command will be executed only when one of
  5635.      *  the following conditions is true:
  5636.      *
  5637.      *  1. "hw.exe" does not exist.
  5638.      *  2. "hw.obj" is newer than "hw.exe".
  5639.      *  3. "c:\windev\lib\libw.lib" is newer than "hw.exe".
  5640.      *  4. "c:\windev\lib\slibcew.lib" is newer than "hw.exe".
  5641.      *  5. "hw.def" is newer than "hw.exe".
  5642.      *
  5643.      *****************************************************************/
  5644.  
  5645.      link @hw.lnk
  5646.  
  5647.      /*****************************************************************
  5648.      *                     ADD HW.RES TO HW.EXE
  5649.      *
  5650.      *  The following RC command (used to add the resource file,
  5651.      *  "hw.res", to the executable file, "hw.exe") will be executed
  5652.      *  only when one of the following conditions is true:
  5653.      *
  5654.      *  1. The previous RC command used to build, "hw.res", was
  5655.      *     executed.
  5656.      *  2. The previous LINK command used to build, "hw.exe", was
  5657.      *     executed.
  5658.      *
  5659.      *****************************************************************/
  5660.  
  5661.      rc hw.res
  5662.  
  5663. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5664.  
  5665.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5666.      makefile    hw.h  hw.dlg  hw.def
  5667.  
  5668.      /* hw.c - Microsoft Windows program with "Hello World" icon */
  5669.  
  5670.      #include <windows.h>
  5671.      #include "hw.h"
  5672.      /* CMAKE - INCLUDE END */
  5673.  
  5674.      HANDLE hInst ;
  5675.  
  5676.      int PASCAL WinMain ( HANDLE hInstance     ,
  5677.                           HANDLE hPrevInstance ,
  5678.                           LPSTR  lpCmdLine     ,
  5679.                           int    nCmdShow        )
  5680.  
  5681.      {
  5682.      WNDCLASS wc      ;
  5683.      HWND     hWnd    ;
  5684.      MSG      message ;
  5685.  
  5686.      if ( ! hPrevInstance )
  5687.  
  5688.         {
  5689.         wc.style = NULL ;
  5690.  
  5691.         wc.lpfnWndProc = MainWndProc ;
  5692.  
  5693.         wc.cbClsExtra = 0 ;
  5694.  
  5695.         wc.cbWndExtra = 0 ;
  5696.  
  5697.         wc.hInstance = hInstance ;
  5698.  
  5699.         wc.hIcon = LoadIcon ( hInstance    ,
  5700.                               "HelloWorld"   ) ;
  5701.  
  5702.         wc.hCursor = LoadCursor ( NULL      ,
  5703.                                   IDC_ARROW   ) ;
  5704.  
  5705.         wc.hbrBackground = GetStockObject ( WHITE_BRUSH ) ;
  5706.  
  5707.         wc.lpszMenuName =  "HWMenu" ;
  5708.  
  5709.         wc.lpszClassName = "HWWClass" ;
  5710.  
  5711.         if ( ! ( RegisterClass ( & wc ) ) )
  5712.  
  5713.            {
  5714.            return ( FALSE ) ;
  5715.            }
  5716.         }
  5717.  
  5718.      hInst = hInstance ;
  5719.  
  5720.      if ( ! ( hWnd = CreateWindow ( "HWWClass"           ,
  5721.                                     "Sample Program"     ,
  5722.                                     WS_OVERLAPPEDWINDOW  ,
  5723.                                     CW_USEDEFAULT        ,
  5724.                                     CW_USEDEFAULT        ,
  5725.                                     CW_USEDEFAULT        ,
  5726.                                     CW_USEDEFAULT        ,
  5727.                                     NULL                 ,
  5728.                                     NULL                 ,
  5729.                                     hInstance            ,
  5730.                                     NULL                   ) ) )
  5731.  
  5732.         {
  5733.         return ( FALSE ) ;
  5734.         }
  5735.  
  5736.      else
  5737.  
  5738.         {
  5739.         ShowWindow ( hWnd     ,
  5740.                      nCmdShow   ) ;
  5741.  
  5742.         UpdateWindow ( hWnd ) ;
  5743.         }
  5744.  
  5745.      while ( GetMessage ( & message ,
  5746.                           NULL      ,
  5747.                           NULL      ,
  5748.                           NULL        ) )
  5749.            {
  5750.            TranslateMessage ( & message ) ;
  5751.  
  5752.            DispatchMessage ( & message ) ;
  5753.            }
  5754.  
  5755.      return ( message
  5756.                 .wParam ) ;
  5757.      }
  5758.  
  5759.  
  5760.      long FAR PASCAL MainWndProc ( HWND     hWnd    ,
  5761.                                    unsigned message ,
  5762.                                    WORD     wParam  ,
  5763.                                    LONG     lParam    )
  5764.  
  5765.      {
  5766.      FARPROC lpProcAbout ;
  5767.  
  5768.      switch ( message )
  5769.  
  5770.             {
  5771.             case WM_COMMAND :
  5772.  
  5773.                  if (    wParam
  5774.                       == IDM_ABOUT )
  5775.  
  5776.                     {
  5777.                     lpProcAbout = MakeProcInstance ( About ,
  5778.                                                      hInst   ) ;
  5779.  
  5780.                     DialogBox ( hInst       ,
  5781.                                 "AboutBox"  ,
  5782.                                 hWnd        ,
  5783.                                 lpProcAbout   ) ;
  5784.  
  5785.                      FreeProcInstance ( lpProcAbout ) ;
  5786.  
  5787.                      break ;
  5788.                      }
  5789.  
  5790.                  else
  5791.  
  5792.                      {
  5793.                      return ( DefWindowProc ( hWnd    ,
  5794.                                               message ,
  5795.                                               wParam  ,
  5796.                                               lParam    ) ) ;
  5797.                      }
  5798.  
  5799.             case WM_DESTROY :
  5800.  
  5801.                  PostQuitMessage ( 0 ) ;
  5802.  
  5803.                  break ;
  5804.  
  5805.             default :
  5806.  
  5807.                  return ( DefWindowProc ( hWnd    ,
  5808.                                           message ,
  5809.                                           wParam  ,
  5810.                                           lParam    ) ) ;
  5811.  
  5812.                  break ;
  5813.             }
  5814.  
  5815.      return ( NULL ) ;
  5816.      }
  5817.  
  5818.  
  5819.      BOOL FAR PASCAL About ( HWND     hDlg    ,
  5820.                              unsigned message ,
  5821.                              WORD     wParam  ,
  5822.                              LONG     lParam    )
  5823.  
  5824.      {
  5825.      switch ( message )
  5826.  
  5827.             {
  5828.             case WM_INITDIALOG :
  5829.  
  5830.                  return ( TRUE ) ;
  5831.  
  5832.             case WM_COMMAND :
  5833.  
  5834.                  if (    (    wParam
  5835.                            == IDOK   )
  5836.                       || (    wParam
  5837.                            == IDCANCEL ) )
  5838.  
  5839.                     {
  5840.                     EndDialog ( hDlg ,
  5841.                                 TRUE   ) ;
  5842.  
  5843.                     return ( TRUE ) ;
  5844.                     }
  5845.  
  5846.                  break ;
  5847.             }
  5848.  
  5849.      return ( FALSE ) ;
  5850.      }
  5851.  
  5852. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5853.  
  5854.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5855.      makefile    hw.h  hw.dlg  hw.def
  5856.  
  5857.      /* hw.h - Header file for hw.c */
  5858.  
  5859.      #define IDM_ABOUT 100
  5860.  
  5861.      int PASCAL WinMain ( HANDLE ,
  5862.                           HANDLE ,
  5863.                           LPSTR  ,
  5864.                           int      ) ;
  5865.  
  5866.      long FAR PASCAL MainWndProc ( HWND     ,
  5867.                                    unsigned ,
  5868.                                    WORD     ,
  5869.                                    LONG       ) ;
  5870.  
  5871.      BOOL FAR PASCAL About ( HWND     ,
  5872.                              unsigned ,
  5873.                              WORD     ,
  5874.                              LONG       ) ;
  5875.  
  5876. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5877.  
  5878.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5879.      makefile    hw.h  hw.dlg  hw.def
  5880.  
  5881.      /* hw.rc - Resource-script file for hw.exe */
  5882.  
  5883.      #include <windows.h>
  5884.      #include "hw.h"
  5885.  
  5886.      HelloWorld ICON hw.ico
  5887.  
  5888.      #include "hw.dlg"
  5889.      /* CMAKE - INCLUDE END */
  5890.  
  5891.      HWMenu MENU
  5892.      BEGIN
  5893.          POPUP        "&Help"
  5894.          BEGIN
  5895.              MENUITEM "&About...", IDM_ABOUT
  5896.          END
  5897.      END
  5898.  
  5899. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5900.  
  5901.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5902.      makefile    hw.h  hw.dlg  hw.def
  5903.  
  5904.      /* hw.dlg - "About" dialog box */
  5905.  
  5906.      ABOUTBOX DIALOG LOADONCALL
  5907.                      MOVEABLE
  5908.                      DISCARDABLE
  5909.                      23  ,
  5910.                      18  ,
  5911.                      144 ,
  5912.                      45
  5913.  
  5914.      CAPTION "About"
  5915.  
  5916.      STYLE   WS_BORDER
  5917.            | WS_CAPTION
  5918.            | WS_DLGFRAME
  5919.            | WS_SYSMENU
  5920.            | DS_MODALFRAME
  5921.            | WS_POPUP
  5922.  
  5923.      BEGIN
  5924.  
  5925.          CONTROL "Sample Program" ,
  5926.                  -1               ,
  5927.                  "static"         ,
  5928.                    SS_CENTER
  5929.                  | WS_GROUP
  5930.                  | WS_CHILD       ,
  5931.                  17               ,
  5932.                  7                ,
  5933.                  122              ,
  5934.                  8
  5935.  
  5936.          CONTROL "OK"               ,
  5937.                  1                  ,
  5938.                  "button"           ,
  5939.                    BS_DEFPUSHBUTTON
  5940.                  | WS_GROUP
  5941.                  | WS_TABSTOP
  5942.                  | WS_CHILD         ,
  5943.                  61                 ,
  5944.                  22                 ,
  5945.                  32                 ,
  5946.                  14
  5947.  
  5948.          CONTROL "HelloWorld" ,
  5949.                  -1           ,
  5950.                  "static"     ,
  5951.                    SS_ICON
  5952.                  | WS_CHILD   ,
  5953.                  19           ,
  5954.                  12           ,
  5955.                  16           ,
  5956.                  21
  5957.  
  5958.      END
  5959.  
  5960. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5961.  
  5962.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5963.      makefile    hw.h  hw.dlg  hw.def
  5964.  
  5965.      "hw.ico" is the icon file for the "Hello World" icon.
  5966.  
  5967. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5968.  
  5969.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5970.      makefile    hw.h  hw.dlg  hw.def
  5971.  
  5972.      ; hw.def - Module-definition file for hw.exe
  5973.  
  5974.      NAME         HelloWorld
  5975.  
  5976.      DESCRIPTION  'Sample Program'
  5977.  
  5978.      EXETYPE      WINDOWS
  5979.  
  5980.      STUB         'WINSTUB.EXE'
  5981.  
  5982.      CODE         PRELOAD MOVEABLE DISCARDABLE
  5983.      DATA         PRELOAD MOVEABLE MULTIPLE
  5984.  
  5985.      HEAPSIZE     1024
  5986.      STACKSIZE    5120
  5987.  
  5988.      EXPORTS
  5989.                   MainWndProc @1
  5990.                   About       @2
  5991.  
  5992. ─────Microsoft Windows Software Development Kit Sample──────────────────────
  5993.  
  5994.      readme.txt  hw.c  hw.rc   hw.ico  hw.lnk
  5995.      makefile    hw.h  hw.dlg  hw.def
  5996.  
  5997.      hw.obj
  5998.      hw.exe /nod
  5999.      NUL
  6000.      c:\windev\lib\libw.lib    +
  6001.      c:\windev\lib\slibcew.lib
  6002.      hw.def ;
  6003.  
  6004. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6005.  
  6006.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6007.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6008.      greeting.c  a_world.asm  hello.inc  world.inc
  6009.      greeting.h  a_world.h
  6010.  
  6011.      This sample demonstrates how to use CMAKE to maintain a DOS
  6012.      application that is built with the programs: MASM, CL, LIB, and
  6013.      LINK.
  6014.  
  6015.      Note the Following:
  6016.  
  6017.      1. The commands (and comments) in the make file.  CMAKE will
  6018.         deduce all dependencies from these commands.
  6019.  
  6020.         See: When is a MASM Command Required?
  6021.              When is a CL Command Required?
  6022.              When is a LIB Command Required?
  6023.              When is a LINK Command Required?
  6024.  
  6025.      2. The format of the LIB response file, "message.lrf".  CMAKE
  6026.         requires that a response file (of a particular form) be used
  6027.         with the LIB command.
  6028.  
  6029.         See: The LIB Command Line
  6030.  
  6031.      3. The format of the LINK response file, "greeting.lnk".  CMAKE
  6032.         requires that a response file (of a particular form) be used
  6033.         with the LINK command.
  6034.  
  6035.         See: The LINK Command Line
  6036.  
  6037.      4. The use and placement of the comment
  6038.  
  6039.         ; CMAKE - INCLUDE END
  6040.  
  6041.         in the files, "a_hello.asm" and "a_world.asm".
  6042.  
  6043.         In these files, this comment is placed after all include
  6044.         statements.  Although this comment is not required in assembly-
  6045.         language-source files, it serves as an end-of-file mark for
  6046.         CMAKE, and thus prevents CMAKE from searching the entire source
  6047.         file for include statements.
  6048.  
  6049.         See: Use the End-of-Includes Comment in Your Source Files
  6050.              Switches for MASM
  6051.              How CMAKE Processes an Assembly-Language-Source File
  6052.  
  6053.      5. The use and placement of the comment
  6054.  
  6055.         /* CMAKE - INCLUDE END */
  6056.  
  6057.         in the files, "hello.c", "world.c", and "greeting.c".
  6058.  
  6059.         In these files, this comment is placed after all #include
  6060.         statements.  Although this comment is not required in C-source
  6061.         files, it serves as an end-of-file mark for CMAKE, and thus
  6062.         prevents CMAKE from searching the entire source file for
  6063.         #include statements.
  6064.  
  6065.         See: Use the End-of-Includes Comment in Your Source Files
  6066.              Switches for CL
  6067.              How CMAKE Processes a C-Source File
  6068.  
  6069. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6070.  
  6071.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6072.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6073.      greeting.c  a_world.asm  hello.inc  world.inc
  6074.      greeting.h  a_world.h
  6075.  
  6076.      /*****************************************************************
  6077.      *                           MAKEFILE
  6078.      *
  6079.      *  PURPOSE: Build the following modules:
  6080.      *
  6081.      *           "a_hello.obj" "hello.obj" "message.lib" "greeting.exe"
  6082.      *           "a_world.obj" "world.obj" "greeting.obj"
  6083.      *
  6084.      *  NOTE: None of the comments in this make file are required.
  6085.      *        They have been provided to help you understand how CMAKE
  6086.      *        handles each command.  In other words, this make file
  6087.      *        could be reduced down to the following seven commands:
  6088.      *
  6089.      *        masm /W2 /V /Z a_hello.asm,a_hello.obj;
  6090.      *        masm /W2 /V /Z a_world.asm,a_world.obj;
  6091.      *        cl /c /W4 hello.c
  6092.      *        cl /c /W4 world.c
  6093.      *        lib @message.lrf
  6094.      *        cl /c /W4 greeting.c
  6095.      *        link @greeting.lnk
  6096.      *
  6097.      *****************************************************************/
  6098.  
  6099.      /*****************************************************************
  6100.      *                          A_HELLO.OBJ
  6101.      *
  6102.      *  The following MASM command will be executed only when one of
  6103.      *  the following conditions is true:
  6104.      *
  6105.      *  1. "a_hello.obj" does not exist.
  6106.      *  2. "a_hello.asm" is newer than "a_hello.obj".
  6107.      *  3. "hello.inc" is newer than "a_hello.obj".
  6108.      *
  6109.      *****************************************************************/
  6110.  
  6111.      masm /W2 /V /Z a_hello.asm,a_hello.obj;
  6112.  
  6113.      /*****************************************************************
  6114.      *                          A_WORLD.OBJ
  6115.      *
  6116.      *  The following MASM command will be executed only when one of
  6117.      *  the following conditions is true:
  6118.      *
  6119.      *  1. "a_world.obj" does not exist.
  6120.      *  2. "a_world.asm" is newer than "a_world.obj".
  6121.      *  3. "world.inc" is newer than "a_world.obj".
  6122.      *
  6123.      *****************************************************************/
  6124.  
  6125.      masm /W2 /V /Z a_world.asm,a_world.obj;
  6126.  
  6127.      /*****************************************************************
  6128.      *                           HELLO.OBJ
  6129.      *
  6130.      *  The following CL command will be executed only when one of the
  6131.      *  following conditions is true:
  6132.      *
  6133.      *  1. "hello.obj" does not exist.
  6134.      *  2. "hello.c" is newer than "hello.obj".
  6135.      *  3. "hello.h" is newer than "hello.obj".
  6136.      *
  6137.      *****************************************************************/
  6138.  
  6139.      cl /c /W4 hello.c
  6140.  
  6141.      /*****************************************************************
  6142.      *                           WORLD.OBJ
  6143.      *
  6144.      *  The following CL command will be executed only when one of the
  6145.      *  following conditions is true:
  6146.      *
  6147.      *  1. "world.obj" does not exist.
  6148.      *  2. "world.c" is newer than "world.obj".
  6149.      *  3. "world.h" is newer than "world.obj".
  6150.      *
  6151.      *****************************************************************/
  6152.  
  6153.      cl /c /W4 world.c
  6154.  
  6155.      /*****************************************************************
  6156.      *                          MESSAGE.LIB
  6157.      *
  6158.      *  The following LIB command will be executed only when one of the
  6159.      *  following conditions is true:
  6160.      *
  6161.      *  1. "message.lib" does not exist.
  6162.      *  2. "a_hello.obj" is newer than "message.lib".
  6163.      *  3. "a_world.obj" is newer than "message.lib".
  6164.      *  4. "hello.obj" is newer than "message.lib".
  6165.      *  5. "world.obj" is newer than "message.lib".
  6166.      *
  6167.      *  Actually, only those objects that are newer than the library,
  6168.      *  "message.lib", will be added to the library.  For example,
  6169.      *  suppose "message.lib" exists, "a_hello.obj" is newer than
  6170.      *  "message.lib", and "message.lib" is newer than "a_world.obj",
  6171.      *  "hello.obj", and "world.obj".  In this case, only "a_hello.obj"
  6172.      *  must be added to the library, "message.lib".  Thus, in this
  6173.      *  case, CMAKE would execute the following command:
  6174.      *
  6175.      *  lib @message.clb
  6176.      *
  6177.      *  where "message.clb" consists of the following lines:
  6178.      *
  6179.      *  message.lib
  6180.      *  -+a_hello.obj ;
  6181.      *
  6182.      *****************************************************************/
  6183.  
  6184.      lib @message.lrf
  6185.  
  6186.      /*****************************************************************
  6187.      *                         GREETING.OBJ
  6188.      *
  6189.      *  The following CL command will be executed only when one of the
  6190.      *  following conditions is true:
  6191.      *
  6192.      *  1. "greeting.obj" does not exist.
  6193.      *  2. "greeting.c" is newer than "greeting.obj".
  6194.      *  3. "a_hello.h" is newer than "greeting.obj".
  6195.      *  4. "a_world.h" is newer than "greeting.obj".
  6196.      *  5. "greeting.h" is newer than "greeting.obj".
  6197.      *
  6198.      *****************************************************************/
  6199.  
  6200.      cl /c /W4 greeting.c
  6201.  
  6202.      /*****************************************************************
  6203.      *                         GREETING.EXE
  6204.      *
  6205.      *  The following LINK command will be executed only when one of
  6206.      *  the following conditions is true:
  6207.      *
  6208.      *  1. "greeting.exe" does not exist.
  6209.      *  2. "greeting.obj" is newer than "greeting.exe".
  6210.      *  3. "message.lib" is newer than "greeting.exe".
  6211.      *
  6212.      *****************************************************************/
  6213.  
  6214.      link @greeting.lnk
  6215.  
  6216. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6217.  
  6218.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6219.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6220.      greeting.c  a_world.asm  hello.inc  world.inc
  6221.      greeting.h  a_world.h
  6222.  
  6223.      /* greeting.c - Program to print "Hello World" */
  6224.  
  6225.      #include "a_hello.h"
  6226.      #include "a_world.h"
  6227.      #include "greeting.h"
  6228.      /* CMAKE - INCLUDE END */
  6229.  
  6230.      int main ( void )
  6231.  
  6232.      {
  6233.      a_print_hello ( ) ;
  6234.  
  6235.      a_print_world ( ) ;
  6236.  
  6237.      return ( 0 ) ;
  6238.      }
  6239.  
  6240. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6241.  
  6242.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6243.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6244.      greeting.c  a_world.asm  hello.inc  world.inc
  6245.      greeting.h  a_world.h
  6246.  
  6247.      /* greeting.h - Header file for greeting.c */
  6248.  
  6249.      int main ( void ) ;
  6250.  
  6251. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6252.  
  6253.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6254.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6255.      greeting.c  a_world.asm  hello.inc  world.inc
  6256.      greeting.h  a_world.h
  6257.  
  6258.      ; a_hello.asm - Function to call C function to print "Hello"
  6259.  
  6260.      TITLE  hello.asm
  6261.      DOSSEG
  6262.      .MODEL SMALL,C
  6263.  
  6264.      .CODE
  6265.  
  6266.      include hello.inc
  6267.      ; CMAKE - INCLUDE END
  6268.  
  6269.      a_print_hello PROC
  6270.        call print_hello
  6271.        ret
  6272.      a_print_hello ENDP
  6273.  
  6274.      END
  6275.  
  6276. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6277.  
  6278.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6279.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6280.      greeting.c  a_world.asm  hello.inc  world.inc
  6281.      greeting.h  a_world.h
  6282.  
  6283.      /* a_hello.h - Header file for a_hello.asm */
  6284.  
  6285.      void a_print_hello ( void ) ;
  6286.  
  6287. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6288.  
  6289.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6290.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6291.      greeting.c  a_world.asm  hello.inc  world.inc
  6292.      greeting.h  a_world.h
  6293.  
  6294.      ; a_world.asm - Function to call C function to print "World"
  6295.  
  6296.      TITLE  world.asm
  6297.      DOSSEG
  6298.      .MODEL SMALL,C
  6299.  
  6300.      .CODE
  6301.  
  6302.      include world.inc
  6303.      ; CMAKE - INCLUDE END
  6304.  
  6305.      a_print_world PROC
  6306.        call print_world
  6307.        ret
  6308.      a_print_world ENDP
  6309.  
  6310.      END
  6311.  
  6312. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6313.  
  6314.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6315.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6316.      greeting.c  a_world.asm  hello.inc  world.inc
  6317.      greeting.h  a_world.h
  6318.  
  6319.      /* a_world.h - Header file for a_world.asm */
  6320.  
  6321.      void a_print_world ( void ) ;
  6322.  
  6323. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6324.  
  6325.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6326.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6327.      greeting.c  a_world.asm  hello.inc  world.inc
  6328.      greeting.h  a_world.h
  6329.  
  6330.      /* hello.c - Function to print "Hello" */
  6331.  
  6332.      #include <stdio.h>
  6333.      #include "hello.h"
  6334.      /* CMAKE - INCLUDE END */
  6335.  
  6336.      void print_hello ( void )
  6337.  
  6338.      {
  6339.      printf ( "Hello\n" ) ;
  6340.      }
  6341.  
  6342. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6343.  
  6344.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6345.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6346.      greeting.c  a_world.asm  hello.inc  world.inc
  6347.      greeting.h  a_world.h
  6348.  
  6349.      /* hello.h - Header file for hello.c */
  6350.  
  6351.      void print_hello ( void ) ;
  6352.  
  6353. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6354.  
  6355.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6356.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6357.      greeting.c  a_world.asm  hello.inc  world.inc
  6358.      greeting.h  a_world.h
  6359.  
  6360.      ; hello.inc - Include file for hello.c
  6361.  
  6362.      EXTRN C print_hello : PROC
  6363.  
  6364. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6365.  
  6366.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6367.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6368.      greeting.c  a_world.asm  hello.inc  world.inc
  6369.      greeting.h  a_world.h
  6370.  
  6371.      /* world.c - Function to print "World" */
  6372.  
  6373.      #include <stdio.h>
  6374.      #include "world.h"
  6375.      /* CMAKE - INCLUDE END */
  6376.  
  6377.      void print_world ( void )
  6378.  
  6379.      {
  6380.      printf ( "World\n" ) ;
  6381.      }
  6382.  
  6383. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6384.  
  6385.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6386.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6387.      greeting.c  a_world.asm  hello.inc  world.inc
  6388.      greeting.h  a_world.h
  6389.  
  6390.      /* world.h - Header file for world.c */
  6391.  
  6392.      void print_world ( void ) ;
  6393.  
  6394. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6395.  
  6396.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6397.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6398.      greeting.c  a_world.asm  hello.inc  world.inc
  6399.      greeting.h  a_world.h
  6400.  
  6401.      ; world.inc - Include file for world.c
  6402.  
  6403.      EXTRN C print_world : PROC
  6404.  
  6405. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6406.  
  6407.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6408.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6409.      greeting.c  a_world.asm  hello.inc  world.inc
  6410.      greeting.h  a_world.h
  6411.  
  6412.      message.lib
  6413.      y
  6414.      -+a_hello.obj &
  6415.      -+a_world.obj &
  6416.      -+hello.obj   &
  6417.      -+world.obj   ;
  6418.  
  6419. ─────Microsoft Macro Assembler Sample───────────────────────────────────────
  6420.  
  6421.      readme.txt  a_hello.asm  hello.c    world.c    message.lrf
  6422.      makefile    a_hello.h    hello.h    world.h    greeting.lnk
  6423.      greeting.c  a_world.asm  hello.inc  world.inc
  6424.      greeting.h  a_world.h
  6425.  
  6426.      greeting.obj
  6427.      greeting.exe /stack:2048
  6428.      NUL
  6429.      message.lib ;
  6430.  
  6431. ─────COPY Command Sample────────────────────────────────────────────────────
  6432.  
  6433.      readme.txt  src\1.src  src\more\3.src
  6434.      makefile    src\2.src
  6435.  
  6436.      This sample demonstrates how CMAKE handles the COPY command.
  6437.  
  6438.      Note the Following:
  6439.  
  6440.      1. The commands (and comments) in the make file.  CMAKE will
  6441.         deduce all dependencies from these commands.
  6442.  
  6443.         See: COPY
  6444.  
  6445. ─────COPY Command Sample────────────────────────────────────────────────────
  6446.  
  6447.      readme.txt  src\1.src  src\more\3.src
  6448.      makefile    src\2.src
  6449.  
  6450.      /*****************************************************************
  6451.      *                           MAKEFILE
  6452.      *
  6453.      *  PURPOSE: Copy some files.
  6454.      *
  6455.      *  NOTE: None of the comments in this make file are required.
  6456.      *        They have been provided to help you understand how CMAKE
  6457.      *        handles each command.  In other words, this make file
  6458.      *        could be reduced down to the following four commands:
  6459.      *
  6460.      *        copy src\1.src trg\1.trg
  6461.      *        copy src\more\3.src trg
  6462.      *        copy src trg\12.trg
  6463.      *        copy src trg
  6464.      *
  6465.      *****************************************************************/
  6466.  
  6467.      /*****************************************************************
  6468.      *                       COPY FILE TO FILE
  6469.      *
  6470.      *  The following COPY command will be executed only when one of
  6471.      *  the following conditions is true:
  6472.      *
  6473.      *  1. "trg\1.trg" does not exist.
  6474.      *  2. "src\1.src" is newer than "trg\1.trg".
  6475.      *
  6476.      *****************************************************************/
  6477.  
  6478.      copy src\1.src trg\1.trg
  6479.  
  6480.      /*****************************************************************
  6481.      *                    COPY FILE TO DIRECTORY
  6482.      *
  6483.      *  The following COPY command will be executed only when one of
  6484.      *  the following conditions is true:
  6485.      *
  6486.      *  1. "trg\3.src" does not exist.
  6487.      *  2. "src\more\3.src" is newer than "trg\3.src".
  6488.      *
  6489.      *****************************************************************/
  6490.  
  6491.      copy src\more\3.src trg
  6492.  
  6493.      /*****************************************************************
  6494.      *                     COPY DIRECTORY TO FILE
  6495.      *
  6496.      *  The following COPY command will always be executed.
  6497.      *
  6498.      *****************************************************************/
  6499.  
  6500.      copy src trg\12.trg
  6501.  
  6502.      /*****************************************************************
  6503.      *                  COPY DIRECTORY TO DIRECTORY
  6504.      *
  6505.      *  The COPY command:
  6506.      *
  6507.      *       copy src\1.src trg\1.src
  6508.      *
  6509.      *  will be executed only when one of the following conditions is
  6510.      *  true:
  6511.      *
  6512.      *       1. "trg\1.src" does not exist.
  6513.      *       2. "src\1.src" is newer than "trg\1.src".
  6514.      *
  6515.      *  The COPY command:
  6516.      *
  6517.      *       copy src\2.src trg\2.src
  6518.      *
  6519.      *  will be executed only when one of the following conditions is
  6520.      *  true:
  6521.      *
  6522.      *       1. "trg\2.src" does not exist.
  6523.      *       2. "src\2.src" is newer than "trg\2.src".
  6524.      *
  6525.      *****************************************************************/
  6526.  
  6527.      copy src trg
  6528.  
  6529. ─────COPY Command Sample────────────────────────────────────────────────────
  6530.  
  6531.      readme.txt  src\1.src  src\more\3.src
  6532.      makefile    src\2.src
  6533.  
  6534.      src\1.src - Sample source file number 1
  6535.  
  6536. ─────COPY Command Sample────────────────────────────────────────────────────
  6537.  
  6538.      readme.txt  src\1.src  src\more\3.src
  6539.      makefile    src\2.src
  6540.  
  6541.      src\2.src - Sample source file number 2
  6542.  
  6543. ─────COPY Command Sample────────────────────────────────────────────────────
  6544.  
  6545.      readme.txt  src\1.src  src\more\3.src
  6546.      makefile    src\2.src
  6547.  
  6548.      src\more\3.src - Sample source file number 3
  6549.  
  6550. ─────if Statement Sample────────────────────────────────────────────────────
  6551.  
  6552.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6553.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6554.  
  6555.      This sample demonstrates how to use if statements in a make file.
  6556.  
  6557.      Note the Following:
  6558.  
  6559.      1. The if statements (and comments) in the make file.
  6560.  
  6561.         See: The if Statement
  6562.  
  6563. ─────if Statement Sample────────────────────────────────────────────────────
  6564.  
  6565.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6566.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6567.  
  6568.      /*****************************************************************
  6569.      *                           MAKEFILE
  6570.      *
  6571.      *  PURPOSE: Build the following modules:
  6572.      *
  6573.      *           "hello.obj"  "message.lib"   "greeting.exe"
  6574.      *           "world.obj"  "greeting.obj"
  6575.      *
  6576.      *  NOTE: Since CMAKE automatically determines the dependencies
  6577.      *        for CL, LIB, and LINK, you would not ordinarily use an
  6578.      *        if statement to explicitly specify dependencies for these
  6579.      *        commands.  The if statement has been used in this make
  6580.      *        file for demonstration purposes, only.
  6581.      *
  6582.      *        None of the comments in this make file are required.
  6583.      *        They have been provided to help you understand how CMAKE
  6584.      *        handles each command.
  6585.      *
  6586.      *****************************************************************/
  6587.  
  6588.      /*****************************************************************
  6589.      *                           HELLO.OBJ
  6590.      *
  6591.      *  The following CL and LIB commands will be executed only when
  6592.      *  one of the following conditions is true:
  6593.      *
  6594.      *  1. "hello.obj" does not exist.
  6595.      *  2. "message.lib" does not exist.
  6596.      *  3. "hello.c" is newer than "hello.obj".
  6597.      *  5. "hello.c" is newer than "message.lib".
  6598.      *  4. "hello.h" is newer than "hello.obj".
  6599.      *  6. "hello.h" is newer than "message.lib".
  6600.      *
  6601.      *****************************************************************/
  6602.  
  6603.      if ( hello.obj
  6604.           message.lib < hello.c
  6605.                         hello.h )
  6606.  
  6607.         {
  6608.         cl /c /W4 hello.c
  6609.  
  6610.         lib message.lib -+hello.obj;
  6611.         }
  6612.  
  6613.      /*****************************************************************
  6614.      *                           WORLD.OBJ
  6615.      *
  6616.      *  The following CL and LIB commands will be executed only when
  6617.      *  one of the following conditions is true:
  6618.      *
  6619.      *  1. "world.obj" does not exist.
  6620.      *  2. "message.lib" does not exist.
  6621.      *  3. "world.c" is newer than "world.obj".
  6622.      *  5. "world.c" is newer than "message.lib".
  6623.      *  4. "world.h" is newer than "world.obj".
  6624.      *  6. "world.h" is newer than "message.lib".
  6625.      *
  6626.      *****************************************************************/
  6627.  
  6628.      if ( world.obj message.lib < world.c world.h )
  6629.  
  6630.         {
  6631.         cl /c /W4 world.c
  6632.  
  6633.         lib message.lib -+world.obj;
  6634.         }
  6635.  
  6636.      /*****************************************************************
  6637.      *                         GREETING.OBJ
  6638.      *
  6639.      *  The following CL command will be executed only when one of the
  6640.      *  following conditions is true:
  6641.      *
  6642.      *  1. "greeting.obj" does not exist.
  6643.      *  2. "greeting.c" is newer than "greeting.obj".
  6644.      *  3. "hello.h" is newer than "greeting.obj".
  6645.      *  4. "world.h" is newer than "greeting.obj".
  6646.      *  5. "greeting.h" is newer than "greeting.obj".
  6647.      *
  6648.      *****************************************************************/
  6649.  
  6650.      if (   greeting.obj
  6651.           < greeting.c
  6652.             hello.h
  6653.             world.h
  6654.             greeting.h )
  6655.  
  6656.         cl /c /W4 greeting.c
  6657.  
  6658.      /*****************************************************************
  6659.      *                         GREETING.EXE
  6660.      *
  6661.      *  The following LINK command will be executed only when one of
  6662.      *  the following conditions is true:
  6663.      *
  6664.      *  1. "greeting.exe" does not exist.
  6665.      *  2. "greeting.obj" is newer than "greeting.exe".
  6666.      *  3. "message.lib" is newer than "greeting.exe".
  6667.      *
  6668.      *****************************************************************/
  6669.  
  6670.      if ( greeting.exe < greeting.obj message.lib )
  6671.  
  6672.         link @greeting.lnk
  6673.  
  6674. ─────if Statement Sample────────────────────────────────────────────────────
  6675.  
  6676.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6677.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6678.  
  6679.      /* greeting.c - Program to print "Hello World" */
  6680.  
  6681.      #include "hello.h"
  6682.      #include "world.h"
  6683.      #include "greeting.h"
  6684.  
  6685.      int main ( void )
  6686.  
  6687.      {
  6688.      print_hello ( ) ;
  6689.  
  6690.      print_world ( ) ;
  6691.  
  6692.      return ( 0 ) ;
  6693.      }
  6694.  
  6695. ─────if Statement Sample────────────────────────────────────────────────────
  6696.  
  6697.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6698.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6699.  
  6700.      /* greeting.h - Header file for greeting.c */
  6701.  
  6702.      int main ( void ) ;
  6703.  
  6704. ─────if Statement Sample────────────────────────────────────────────────────
  6705.  
  6706.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6707.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6708.  
  6709.      /* hello.c - Function to print "Hello" */
  6710.  
  6711.      #include <stdio.h>
  6712.      #include "hello.h"
  6713.  
  6714.      void print_hello ( void )
  6715.  
  6716.      {
  6717.      printf ( "Hello\n" ) ;
  6718.      }
  6719.  
  6720. ─────if Statement Sample────────────────────────────────────────────────────
  6721.  
  6722.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6723.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6724.  
  6725.      /* hello.h - Header file for hello.c */
  6726.  
  6727.      void print_hello ( void ) ;
  6728.  
  6729. ─────if Statement Sample────────────────────────────────────────────────────
  6730.  
  6731.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6732.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6733.  
  6734.      /* world.c - Function to print "World" */
  6735.  
  6736.      #include <stdio.h>
  6737.      #include "world.h"
  6738.  
  6739.      void print_world ( void )
  6740.  
  6741.      {
  6742.      printf ( "World\n" ) ;
  6743.      }
  6744.  
  6745. ─────if Statement Sample────────────────────────────────────────────────────
  6746.  
  6747.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6748.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6749.  
  6750.      /* world.h - Header file for world.c */
  6751.  
  6752.      void print_world ( void ) ;
  6753.  
  6754. ─────if Statement Sample────────────────────────────────────────────────────
  6755.  
  6756.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6757.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6758.  
  6759.      message.lib
  6760.      y
  6761.      -+hello.obj &
  6762.      -+world.obj ;
  6763.  
  6764. ─────if Statement Sample────────────────────────────────────────────────────
  6765.  
  6766.      readme.txt  greeting.c  hello.c  world.c  message.lrf
  6767.      makefile    greeting.h  hello.h  world.h  greeting.lnk
  6768.  
  6769.      greeting.obj
  6770.      greeting.exe /stack:2048
  6771.      NUL
  6772.      message.lib ;
  6773.  
  6774. ─────Command-Definition Statement Sample────────────────────────────────────
  6775.  
  6776.      readme.txt  sortsum.bat  source1.txt
  6777.      makefile    cmake.cfg    source2.txt
  6778.  
  6779.      This sample demonstrates how to add a new command to CMAKE's
  6780.      vocabulary through the use of a command-definition statement in
  6781.      the configuration file, "cmake.cfg".
  6782.  
  6783.      Note the Following:
  6784.  
  6785.      1. The commands (and comments) in the make file.  CMAKE will
  6786.         deduce all dependencies from these commands.
  6787.  
  6788.         See: When is a User-Defined Command Required?
  6789.  
  6790.      2. The command-definition statement and section tag, [CMAKE], in
  6791.         the configuration file, "cmake.cfg".
  6792.  
  6793.         See: Command-Definition Statements
  6794.              The CMAKE Section Tag in the Configuration File
  6795.  
  6796. ─────Command-Definition Statement Sample────────────────────────────────────
  6797.  
  6798.      readme.txt  sortsum.bat  source1.txt
  6799.      makefile    cmake.cfg    source2.txt
  6800.  
  6801.      /*****************************************************************
  6802.      *                           MAKEFILE
  6803.      *
  6804.      *  PURPOSE: Concatenate the text files, "source1.txt" and
  6805.      *           "source2.txt", and sort the resulting file,
  6806.      *           "target.txt".
  6807.      *
  6808.      *  NOTE: None of the comments in this make file are required.
  6809.      *        They have been provided to help you understand how CMAKE
  6810.      *        handles each command.  In other words, this make file
  6811.      *        could be reduced down to the following command:
  6812.      *
  6813.      *        sortsum source1.txt source2.txt target.txt
  6814.      *
  6815.      *****************************************************************/
  6816.  
  6817.      /*****************************************************************
  6818.      *                          TARGET.TXT
  6819.      *
  6820.      *  The following SORTSUM command will be executed only when one of
  6821.      *  the following conditions is true:
  6822.      *
  6823.      *  1. "target.txt" does not exist.
  6824.      *  2. "source1.txt" is newer than "target.txt".
  6825.      *  3. "source2.txt" is newer than "target.txt".
  6826.      *
  6827.      *****************************************************************/
  6828.  
  6829.      sortsum source1.txt source2.txt target.txt
  6830.  
  6831. ─────Command-Definition Statement Sample────────────────────────────────────
  6832.  
  6833.      readme.txt  sortsum.bat  source1.txt
  6834.      makefile    cmake.cfg    source2.txt
  6835.  
  6836.      rem sortsum.bat - Batch program to combine two text files and
  6837.      rem               sort the result
  6838.      type %1 >temp
  6839.      type %2 >>temp
  6840.      sort <temp >%3
  6841.      erase temp
  6842.  
  6843. ─────Command-Definition Statement Sample────────────────────────────────────
  6844.  
  6845.      readme.txt  sortsum.bat  source1.txt
  6846.      makefile    cmake.cfg    source2.txt
  6847.  
  6848.      ; cmake.cfg - CMAKE configuration file
  6849.  
  6850.      [CMAKE]
  6851.      command_definition : sortsum sp[%s %s %t]
  6852.  
  6853. ─────Command-Definition Statement Sample────────────────────────────────────
  6854.  
  6855.      readme.txt  sortsum.bat  source1.txt
  6856.      makefile    cmake.cfg    source2.txt
  6857.  
  6858.      a
  6859.      c
  6860.      e
  6861.      b
  6862.      d
  6863.  
  6864. ─────Command-Definition Statement Sample────────────────────────────────────
  6865.  
  6866.      readme.txt  sortsum.bat  source1.txt
  6867.      makefile    cmake.cfg    source2.txt
  6868.  
  6869.      h
  6870.      f
  6871.      g
  6872.      i
  6873.      k
  6874.      j
  6875.  
  6876. ─────Command-Equivalence Statement Sample───────────────────────────────────
  6877.  
  6878.      readme.txt  cmake.cfg
  6879.      makefile    1.txt
  6880.  
  6881.      This sample demonstrates how to add a new command to CMAKE's
  6882.      vocabulary through the use of a command-equivalence statement in
  6883.      the configuration file, "cmake.cfg".
  6884.  
  6885.      Note the Following:
  6886.  
  6887.      1. The commands (and comments) in the make file.  CMAKE will
  6888.         deduce all dependencies from these commands.
  6889.  
  6890.         See: When is a User-Defined Command Required?
  6891.              How CMAKE Processes an Equivalent Command
  6892.  
  6893.      2. The command-equivalence statement, command-definition
  6894.         statement, and section tag, [CMAKE], in the configuration file,
  6895.         "cmake.cfg".
  6896.  
  6897.         See: Command-Equivalence Statements
  6898.              Command-Definition Statements
  6899.              The CMAKE Section Tag in the Configuration File
  6900.  
  6901. ─────Command-Equivalence Statement Sample───────────────────────────────────
  6902.  
  6903.      readme.txt  cmake.cfg
  6904.      makefile    1.txt
  6905.  
  6906.      /*****************************************************************
  6907.      *                           MAKEFILE
  6908.      *
  6909.      *  PURPOSE: Create the file, "2.txt", by sorting the file,
  6910.      *           "1.txt".  Create the file, "3.txt", by extracting all
  6911.      *           the lines from the file, "2.txt", that contain the
  6912.      *           word "toad".
  6913.      *
  6914.      *  NOTE: None of the comments in this make file are required.
  6915.      *        They have been provided to help you understand how CMAKE
  6916.      *        handles each command.  In other words, this make file
  6917.      *        could be reduced down to the following two commands:
  6918.      *
  6919.      *        sort <1.txt >2.txt
  6920.      *        find "toad" <2.txt >3.txt
  6921.      *
  6922.      *****************************************************************/
  6923.  
  6924.      /*****************************************************************
  6925.      *                             2.TXT
  6926.      *
  6927.      *  The following SORT command will be executed only when one of
  6928.      *  the following conditions is true:
  6929.      *
  6930.      *  1. "2.txt" does not exist.
  6931.      *  2. "1.txt" is newer than "2.txt".
  6932.      *
  6933.      *****************************************************************/
  6934.  
  6935.      sort <1.txt >2.txt
  6936.  
  6937.      /*****************************************************************
  6938.      *                             3.TXT
  6939.      *
  6940.      *  The following FIND command will be executed only when one of
  6941.      *  the following conditions is true:
  6942.      *
  6943.      *  1. "3.txt" does not exist.
  6944.      *  2. "2.txt" is newer than "3.txt".
  6945.      *
  6946.      *****************************************************************/
  6947.  
  6948.      find "toad" <2.txt >3.txt
  6949.  
  6950. ─────Command-Equivalence Statement Sample───────────────────────────────────
  6951.  
  6952.      readme.txt  cmake.cfg
  6953.      makefile    1.txt
  6954.  
  6955.      ; cmake.cfg - CMAKE configuration file
  6956.  
  6957.      [CMAKE]
  6958.      command_definition : sort sp[<%s >%t]
  6959.      command_equivalence : find = sort
  6960.  
  6961. ─────Command-Equivalence Statement Sample───────────────────────────────────
  6962.  
  6963.      readme.txt  cmake.cfg
  6964.      makefile    1.txt
  6965.  
  6966.      The toad.
  6967.      The hungry toad.
  6968.      The flea.
  6969.      The edible flea.
  6970.      The hungry toad chased the edible flea.
  6971.  
  6972. ─────Configuration File Sample──────────────────────────────────────────────
  6973.  
  6974.      readme.txt
  6975.      cmake.cfg
  6976.  
  6977.      This sample demonstrates all the possible types of statements that
  6978.      may be used in a CMAKE configuration file.
  6979.  
  6980.      Note the Following in the File, "cmake.cfg":
  6981.  
  6982.      1. The comments.
  6983.  
  6984.         See: Comments in the Configuration File
  6985.  
  6986.      2. The section tag, [CMAKE].
  6987.  
  6988.         See: The CMAKE Section Tag in the Configuration File
  6989.  
  6990.      3. The assignment statements.  "cmake.cfg" gives a complete list
  6991.         of the Boolean variables that may be used in a configuration
  6992.         file.  In this sample, each Boolean variable is set to its
  6993.         default value.
  6994.  
  6995.         See: Assignment Statements in the Configuration File
  6996.  
  6997.      4. The command-definition statement.
  6998.  
  6999.         See: Command-Definition Statements
  7000.  
  7001.      5. The command-equivalence statement.
  7002.  
  7003.         See: Command-Equivalence Statements
  7004.  
  7005. ─────Configuration File Sample──────────────────────────────────────────────
  7006.  
  7007.      readme.txt
  7008.      cmake.cfg
  7009.  
  7010.      ; cmake.cfg - CMAKE configuration file
  7011.  
  7012.      [CMAKE]
  7013.  
  7014.      ; Assignment statements
  7015.      scan_include_files_for_includes = no
  7016.      search_source_dir_for_includes = yes
  7017.      search_current_dir_for_includes = yes
  7018.      c_include_""_on = yes
  7019.      c_include_<>_on = no
  7020.      asm_include_on = yes
  7021.      rc_include_""_on = yes
  7022.      rc_include_<>_on = no
  7023.      rc_include_resource_on = yes
  7024.      run_output_file = yes
  7025.      display_output_file_commands = no
  7026.      display_execution_time = yes
  7027.  
  7028.      ; Command-definition statements
  7029.      command_definition : sort sp[<%s >%t]
  7030.  
  7031.      ; Command-equivalence statements
  7032.      command_equivalence : find = sort
  7033.  
  7034. ────────────────────────────────────────────────────────────────────────────
  7035.  
  7036.      CMAKE Errors
  7037.  
  7038.      To find out about a specific error, do one of the following:
  7039.  
  7040.      1. Click on the error number below with the right mouse button.
  7041.      2. Enter S to search for an error code.
  7042.      3. Execute QuickHelp with the command, QH error_number.
  7043.  
  7044.      M0001     M0023     M0044     M0064     M0084     M0107     M0127
  7045.      M0002     M0024     M0045     M0065     M0085     M0108     M0128
  7046.      M0003     M0025     M0046     M0066     M0086     M0109     M0129
  7047.      M0004     M0026     M0047     M0067     M0087     M0110     M0130
  7048.      M0005     M0027     M0048     M0068     M0088     M0111     M0131
  7049.      M0007     M0028     M0049     M0069     M0089     M0112     M0132
  7050.      M0008     M0029     M0050     M0070     M0090     M0113     M0133
  7051.      M0009     M0030     M0051     M0071     M0091     M0114     M1000
  7052.      M0010     M0031     M0052     M0072     M0092     M0115     M1001
  7053.      M0011     M0032     M0053     M0073     M0093     M0116     M1002
  7054.      M0012     M0033     M0054     M0074     M0094     M0117     M1003
  7055.      M0013     M0034     M0055     M0075     M0095     M0118     M1004
  7056.      M0014     M0035     M0056     M0076     M0098     M0119     M1005
  7057.      M0015     M0036     M0057     M0077     M0100     M0120     M1006
  7058.      M0016     M0037     M0058     M0078     M0101     M0121     M1007
  7059.      M0017     M0038     M0059     M0079     M0102     M0122     M1008
  7060.      M0018     M0039     M0060     M0080     M0103     M0123     M1009
  7061.      M0019     M0040     M0061     M0081     M0104     M0124     M1010
  7062.      M0020     M0041     M0062     M0082     M0105     M0125     M1011
  7063.      M0021     M0042     M0063     M0083     M0106     M0126     M1012
  7064.      M0022     M0043
  7065.  
  7066. ────────────────────────────────────────────────────────────────────────────
  7067.  
  7068.      Fatal CMAKE error M0001
  7069.  
  7070.      invalid command-line parameters
  7071.  
  7072.      The command line used to invoke CMAKE was invalid.
  7073.  
  7074.      This message is displayed only when the verbose output format is
  7075.      selected.
  7076.  
  7077.      See: The CMAKE Command Line
  7078.  
  7079. ────────────────────────────────────────────────────────────────────────────
  7080.  
  7081.      Fatal CMAKE error M0002
  7082.  
  7083.      CMAKE aborted
  7084.  
  7085.      The command line used to invoke CMAKE was invalid.
  7086.  
  7087.      This message is displayed only when the verbose output format is
  7088.      selected.
  7089.  
  7090.      See: The CMAKE Command Line
  7091.  
  7092. ────────────────────────────────────────────────────────────────────────────
  7093.  
  7094.      Fatal CMAKE error M0003
  7095.  
  7096.      unable to load configuration data
  7097.  
  7098.      There is an invalid statement in the CMAKE configuration file.
  7099.  
  7100.      This message is displayed only when the verbose output format is
  7101.      selected.
  7102.  
  7103.      See: The CMAKE Configuration File
  7104.  
  7105. ────────────────────────────────────────────────────────────────────────────
  7106.  
  7107.      Fatal CMAKE error M0004
  7108.  
  7109.      make file 'filename' not found
  7110.  
  7111.      CMAKE could not find the given make file.
  7112.  
  7113.      See: The CMAKE Command Line
  7114.  
  7115. ────────────────────────────────────────────────────────────────────────────
  7116.  
  7117.      Fatal CMAKE error M0007
  7118.  
  7119.      cannot process command
  7120.  
  7121.      One of the commands or statements in the make file could not be
  7122.      processed.
  7123.  
  7124.      This message is displayed only when the verbose output format is
  7125.      selected.
  7126.  
  7127.      See: The Make File
  7128.  
  7129. ────────────────────────────────────────────────────────────────────────────
  7130.  
  7131.      Fatal CMAKE error M0008
  7132.  
  7133.      CMAKE aborted
  7134.  
  7135.      This message is displayed only when the verbose output format is
  7136.      selected and one of the following errors has occurred: M0003,
  7137.      M0004, M0005, M0007, or M0104.
  7138.  
  7139. ────────────────────────────────────────────────────────────────────────────
  7140.  
  7141.      Fatal CMAKE error M0011
  7142.  
  7143.      CMAKE aborted
  7144.  
  7145.      This message is displayed only when the verbose output format is
  7146.      selected and one of the following errors has occurred: M0009 or
  7147.      M0010.
  7148.  
  7149. ────────────────────────────────────────────────────────────────────────────
  7150.  
  7151.      Fatal CMAKE error M0012
  7152.  
  7153.      'character' is an invalid command-line option
  7154.  
  7155.      An invalid option was specified in the command line used to
  7156.      invoke CMAKE.
  7157.  
  7158.      See: The CMAKE Command Line
  7159.  
  7160. ────────────────────────────────────────────────────────────────────────────
  7161.  
  7162.      Fatal CMAKE error M0071
  7163.  
  7164.      cannot process configuration statement
  7165.  
  7166.      One of the statements in the configuration file could not be
  7167.      processed.
  7168.  
  7169.      This message is displayed only when the verbose output format is
  7170.      selected.
  7171.  
  7172.      See: The CMAKE Configuration File
  7173.  
  7174. ────────────────────────────────────────────────────────────────────────────
  7175.  
  7176.      Fatal CMAKE error M0126
  7177.  
  7178.      unable to run QH.EXE - must be in current directory or PATH
  7179.  
  7180.      The /h or /help option was specified in the command line used to
  7181.      invoke CMAKE.  However, CMAKE could not locate the QuickHelp
  7182.      program, QH.EXE.  QH.EXE must be in the current directory or in
  7183.      one of the directories specified in the PATH environment variable.
  7184.  
  7185.      See: Display Help on CMAKE
  7186.  
  7187. ────────────────────────────────────────────────────────────────────────────
  7188.  
  7189.      CMAKE error M0005
  7190.  
  7191.      output file 'filename' not created
  7192.  
  7193.      CMAKE could not create the file, "makefile.bat".
  7194.  
  7195.      If the /o option has been specified in the command line used to
  7196.      invoke CMAKE, check to be sure that the path given with this
  7197.      option is valid.
  7198.  
  7199.      See: The CMAKE Command Line
  7200.  
  7201. ────────────────────────────────────────────────────────────────────────────
  7202.  
  7203.      CMAKE error M0009
  7204.  
  7205.      unable to flush standard output prior to loading 'file1' to run 'file2'
  7206.  
  7207.      CMAKE was unable to flush the standard output buffer before
  7208.      loading "command.com" to execute the batch program,
  7209.      "makefile.bat".
  7210.  
  7211.      If you have chosen to redirect the output from CMAKE to a file,
  7212.      it is possible that the drive on which you have placed this file
  7213.      has no more free space.  This is more likely in the case where
  7214.      your make file and/or configuration file are large, and you have
  7215.      selected the verbose output format and redirected the output from
  7216.      CMAKE to a RAM drive.
  7217.  
  7218.      See: Select Verbose Diagnostic Output from CMAKE
  7219.           Avoid Using the Verbose Output Format for CMAKE
  7220.           Redirect CMAKE Output to a File on a RAM Drive
  7221.  
  7222. ────────────────────────────────────────────────────────────────────────────
  7223.  
  7224.      CMAKE error M0010
  7225.  
  7226.      unable to load 'file1' to run output file 'file2'
  7227.  
  7228.      CMAKE could not load "command.com" to execute the batch program,
  7229.      "makefile.bat".  CMAKE uses the COMSPEC environment variable to
  7230.      locate "command.com".
  7231.  
  7232.      If you cannot solve this problem, use the CMAKE command-line
  7233.      option, /n, or the configuration variable, run_output_file, to
  7234.      avoid executing "makefile.bat" from within CMAKE.  Then, after
  7235.      CMAKE creates "makefile.bat", you may execute this batch file from
  7236.      the command line.
  7237.  
  7238.      See: Suppress Command Execution by CMAKE
  7239.           run_output_file
  7240.  
  7241. ────────────────────────────────────────────────────────────────────────────
  7242.  
  7243.      CMAKE error M0013
  7244.  
  7245.      source-file name is null
  7246.  
  7247.      The source-file name for a CL command given in the make file is
  7248.      NULL.
  7249.  
  7250.      See: The CL Command Line
  7251.  
  7252. ────────────────────────────────────────────────────────────────────────────
  7253.  
  7254.      CMAKE error M0014
  7255.  
  7256.      object-file name is null
  7257.  
  7258.      The object-file name for a CL command given in the make file is
  7259.      NULL.
  7260.  
  7261.      See: The CL Command Line
  7262.  
  7263. ────────────────────────────────────────────────────────────────────────────
  7264.  
  7265.      CMAKE error M0015
  7266.  
  7267.      unable to open source file 'filename'
  7268.  
  7269.      CMAKE could not open the source file for a CL command given in the
  7270.      make file.  CMAKE opens source files in order to search for
  7271.      #include statements.
  7272.  
  7273.      See: The CL Command Line
  7274.  
  7275. ────────────────────────────────────────────────────────────────────────────
  7276.  
  7277.      CMAKE error M0016
  7278.  
  7279.      unable to get time stamp for source file 'filename'
  7280.  
  7281.      CMAKE could not obtain the time stamp for the source file of a CL
  7282.      command given in the make file.
  7283.  
  7284.      See: The CL Command Line
  7285.  
  7286. ────────────────────────────────────────────────────────────────────────────
  7287.  
  7288.      CMAKE error M0017
  7289.  
  7290.      not enough memory to create pseudofile 'filename'
  7291.  
  7292.      CMAKE ran out of memory while processing a CL command given in the
  7293.      make file.
  7294.  
  7295.      Try splitting your make file into two smaller make files that are
  7296.      processed with two consecutive calls to CMAKE.
  7297.  
  7298. ────────────────────────────────────────────────────────────────────────────
  7299.  
  7300.      CMAKE error M0018
  7301.  
  7302.      include file 'filename' not found...
  7303.      in source directory 'sourcedirectoryname'  ...
  7304.      or INCLUDE environment variable paths...
  7305.      'includepaths'
  7306.  
  7307.      CMAKE could not find an include file while processing a CL command
  7308.      given in the make file.  In this case, the include-file name was
  7309.      appended to the source-file's directory and to the directories
  7310.      specified in the INCLUDE environment variable.
  7311.  
  7312.      See: How CMAKE Processes a C-Source File
  7313.  
  7314. ────────────────────────────────────────────────────────────────────────────
  7315.  
  7316.      CMAKE error M0019
  7317.  
  7318.      include file 'filename' not found...
  7319.      in INCLUDE environment variable paths...
  7320.      'includepaths'
  7321.  
  7322.      CMAKE could not find an include file while processing a CL command
  7323.      given in the make file.  In this case, the include-file name was
  7324.      appended to the directories specified in the INCLUDE environment
  7325.      variable.
  7326.  
  7327.      If your include file is located in the source-file's directory,
  7328.      you should check to be sure that you have not set the
  7329.      configuration variable, search_source_dir_for_includes, to 'no'
  7330.      in your configuration file.
  7331.  
  7332.      See: search_source_dir_for_includes
  7333.           Switches for CL
  7334.           How CMAKE Processes a C-Source File
  7335.  
  7336. ────────────────────────────────────────────────────────────────────────────
  7337.  
  7338.      CMAKE error M0020
  7339.  
  7340.      not enough memory to store include-file name 'filename'
  7341.  
  7342.      CMAKE ran out of memory while processing a CL command given in the
  7343.      make file.
  7344.  
  7345.      Try splitting your make file into two smaller make files that are
  7346.      processed with two consecutive calls to CMAKE.
  7347.  
  7348. ────────────────────────────────────────────────────────────────────────────
  7349.  
  7350.      CMAKE error M0021
  7351.  
  7352.      include level exceeds 9
  7353.  
  7354.      Too many levels of nested include statements were used in the
  7355.      source file of a CL command given in the make file.  (The source
  7356.      file itself is level 0, a file that is included in the source file
  7357.      is level 1, etc.)
  7358.  
  7359.      This usually indicates the presence of circular include
  7360.      statements.
  7361.  
  7362. ────────────────────────────────────────────────────────────────────────────
  7363.  
  7364.      CMAKE error M0022
  7365.  
  7366.      unable to open include file 'filename'
  7367.  
  7368.      CMAKE could not open an include file for a CL command given in the
  7369.      make file.  When the configuration variable,
  7370.      scan_include_files_for_includes, is 'yes', CMAKE opens include
  7371.      files in order to search for #include statements.
  7372.  
  7373.      If your include files do not have include statements, you should
  7374.      not set scan_include_files_for_includes to 'yes'.
  7375.  
  7376.      See: scan_include_files_for_includes
  7377.           Switches for CL
  7378.           How CMAKE Processes a C-Source File
  7379.           REM
  7380.           Avoid Scanning Include Files for Includes
  7381.  
  7382. ────────────────────────────────────────────────────────────────────────────
  7383.  
  7384.      CMAKE error M0023
  7385.  
  7386.      cannot determine response-file name (missing '@')
  7387.  
  7388.      The first character of the parameter string for a LIB command
  7389.      given in the make file is not '@'.
  7390.  
  7391.      See: The LIB Command Line
  7392.  
  7393. ────────────────────────────────────────────────────────────────────────────
  7394.  
  7395.      CMAKE error M0024
  7396.  
  7397.      response-file name is null
  7398.  
  7399.      The response-file name for a LIB command given in the make file
  7400.      is NULL.
  7401.  
  7402.      See: The LIB Command Line
  7403.  
  7404. ────────────────────────────────────────────────────────────────────────────
  7405.  
  7406.      CMAKE error M0025
  7407.  
  7408.      unable to open response file 'filename'
  7409.  
  7410.      CMAKE could not open the response file for a LIB command given in
  7411.      the make file.
  7412.  
  7413.      See: The LIB Command Line
  7414.  
  7415. ────────────────────────────────────────────────────────────────────────────
  7416.  
  7417.      CMAKE error M0026
  7418.  
  7419.      not enough memory to load response file 'filename'
  7420.  
  7421.      CMAKE ran out of memory while processing a LIB command given in
  7422.      the make file.
  7423.  
  7424.      Try splitting your make file into two smaller make files that are
  7425.      processed with two consecutive calls to CMAKE.
  7426.  
  7427. ────────────────────────────────────────────────────────────────────────────
  7428.  
  7429.      CMAKE error M0027
  7430.  
  7431.      no operations given in LIB response file
  7432.  
  7433.      There are less than three lines in the response file for a LIB
  7434.      command given in the make file.  CMAKE requires that the first
  7435.      line of the LIB response file must indicate the library name, the
  7436.      second line must be 'y', and the third line must indicate the
  7437.      first operation to be performed on the given library.
  7438.  
  7439.      See: The LIB Command Line
  7440.  
  7441. ────────────────────────────────────────────────────────────────────────────
  7442.  
  7443.      CMAKE error M0028
  7444.  
  7445.      library-file name is null
  7446.  
  7447.      The library name provided in the response file for a LIB command
  7448.      given in the make file is NULL.
  7449.  
  7450.      See: The LIB Command Line
  7451.  
  7452. ────────────────────────────────────────────────────────────────────────────
  7453.  
  7454.      CMAKE error M0029
  7455.  
  7456.      unrecognized LIB operation - must be '+', '-', '-+', '*', or '-*'
  7457.  
  7458.      One of the lines in the response file for a LIB command given in
  7459.      the make file begins with an invalid LIB operator.
  7460.  
  7461.      See: The LIB Command Line
  7462.  
  7463. ────────────────────────────────────────────────────────────────────────────
  7464.  
  7465.      CMAKE error M0030
  7466.  
  7467.      LIB operation must be '-+'
  7468.  
  7469.      One of the lines in the response file for a LIB command given in
  7470.      the make file begins with an unexpected LIB operator.
  7471.  
  7472.      CMAKE requires that when the third line of a LIB response file
  7473.      does not use the add operator, '+', all the operations specified
  7474.      in the response file must be '-+'.
  7475.  
  7476.      See: The LIB Command Line
  7477.  
  7478. ────────────────────────────────────────────────────────────────────────────
  7479.  
  7480.      CMAKE error M0031
  7481.  
  7482.      object file 'filename' does not exist
  7483.  
  7484.      CMAKE could not find one of the object files listed in the
  7485.      response file for a LIB command given in the make file.
  7486.  
  7487.      See: The LIB Command Line
  7488.  
  7489. ────────────────────────────────────────────────────────────────────────────
  7490.  
  7491.      CMAKE error M0032
  7492.  
  7493.      response-file name 'filename' is too long - cannot add '.clb' extension
  7494.  
  7495.      CMAKE requires that when a LIB response file specifies replace
  7496.      operations (-+), the length of the response-file name must not
  7497.      exceed 62.
  7498.  
  7499.      See: Modified Command Line for LIB
  7500.  
  7501. ────────────────────────────────────────────────────────────────────────────
  7502.  
  7503.      CMAKE error M0033
  7504.  
  7505.      new response file 'filename' not created
  7506.  
  7507.      CMAKE could not create the LIB response file for a required LIB
  7508.      command given in the make file.
  7509.  
  7510.      See: Modified Command Line for LIB
  7511.  
  7512. ────────────────────────────────────────────────────────────────────────────
  7513.  
  7514.      CMAKE error M0034
  7515.  
  7516.      unable to delete new response file 'filename'
  7517.  
  7518.      CMAKE aborted and could not remove the LIB response file that it
  7519.      had created for a required LIB command given in the make file.
  7520.  
  7521.      See: Modified Command Line for LIB
  7522.  
  7523. ────────────────────────────────────────────────────────────────────────────
  7524.  
  7525.      CMAKE error M0035
  7526.  
  7527.      unrecognized LIB operation - must be '+', '-', '-+', '*', or '-*'
  7528.  
  7529.      One of the lines in the response file for a LIB command given in
  7530.      the make file begins with an invalid LIB operator.
  7531.  
  7532.      See: The LIB Command Line
  7533.  
  7534. ────────────────────────────────────────────────────────────────────────────
  7535.  
  7536.      CMAKE error M0036
  7537.  
  7538.      LIB operation must be '+'
  7539.  
  7540.      One of the lines in the response file for a LIB command given in
  7541.      the make file begins with an unexpected LIB operator.
  7542.  
  7543.      CMAKE requires that when the third line of a LIB response file
  7544.      uses the add operator, '+', all the operations specified in the
  7545.      response file must be '+'.
  7546.  
  7547.      See: The LIB Command Line
  7548.  
  7549. ────────────────────────────────────────────────────────────────────────────
  7550.  
  7551.      CMAKE error M0037
  7552.  
  7553.      component-library file 'filename' does not exist
  7554.  
  7555.      CMAKE could not find one of the component-library files listed in
  7556.      the response file for a LIB command given in the make file.
  7557.  
  7558.      See: The LIB Command Line
  7559.  
  7560. ────────────────────────────────────────────────────────────────────────────
  7561.  
  7562.      CMAKE error M0038
  7563.  
  7564.      not enough memory to create pseudofile 'filename'
  7565.  
  7566.      CMAKE ran out of memory while processing a LIB command given in
  7567.      the make file.
  7568.  
  7569.      Try splitting your make file into two smaller make files that are
  7570.      processed with two consecutive calls to CMAKE.
  7571.  
  7572. ────────────────────────────────────────────────────────────────────────────
  7573.  
  7574.      CMAKE error M0039
  7575.  
  7576.      cannot determine response-file name (missing '@')
  7577.  
  7578.      The first character of the parameter string for a LINK command
  7579.      given in the make file is not '@'.
  7580.  
  7581.      See: The LINK Command Line
  7582.  
  7583. ────────────────────────────────────────────────────────────────────────────
  7584.  
  7585.      CMAKE error M0040
  7586.  
  7587.      response-file name is null
  7588.  
  7589.      The response-file name for a LINK command given in the make file
  7590.      is NULL.
  7591.  
  7592.      See: The LINK Command Line
  7593.  
  7594. ────────────────────────────────────────────────────────────────────────────
  7595.  
  7596.      CMAKE error M0041
  7597.  
  7598.      unable to open response file 'filename'
  7599.  
  7600.      CMAKE could not open the response file for a LINK command given in
  7601.      the make file.
  7602.  
  7603.      See: The LINK Command Line
  7604.  
  7605. ────────────────────────────────────────────────────────────────────────────
  7606.  
  7607.      CMAKE error M0042
  7608.  
  7609.      not enough memory to load response file 'filename'
  7610.  
  7611.      CMAKE ran out of memory while processing a LINK command given in
  7612.      the make file.
  7613.  
  7614.      Try splitting your make file into two smaller make files that are
  7615.      processed with two consecutive calls to CMAKE.
  7616.  
  7617. ────────────────────────────────────────────────────────────────────────────
  7618.  
  7619.      CMAKE error M0043
  7620.  
  7621.      executable-file name is null
  7622.  
  7623.      The executable name provided in the response file for a LINK
  7624.      command given in the make file is NULL.
  7625.  
  7626.      See: The LINK Command Line
  7627.  
  7628. ────────────────────────────────────────────────────────────────────────────
  7629.  
  7630.      CMAKE error M0044
  7631.  
  7632.      object file 'filename' does not exist
  7633.  
  7634.      CMAKE could not find one of the object files listed in the
  7635.      response file for a LINK command given in the make file.
  7636.  
  7637.      See: The LINK Command Line
  7638.  
  7639. ────────────────────────────────────────────────────────────────────────────
  7640.  
  7641.      CMAKE error M0045
  7642.  
  7643.      library file 'filename' does not exist
  7644.  
  7645.      CMAKE could not find one of the library files listed in the
  7646.      response file for a LINK command given in the make file.
  7647.  
  7648.      See: The LINK Command Line
  7649.  
  7650. ────────────────────────────────────────────────────────────────────────────
  7651.  
  7652.      CMAKE error M0046
  7653.  
  7654.      not enough memory to create pseudofile 'filename'
  7655.  
  7656.      CMAKE ran out of memory while processing a LINK command given in
  7657.      the make file.
  7658.  
  7659.      Try splitting your make file into two smaller make files that are
  7660.      processed with two consecutive calls to CMAKE.
  7661.  
  7662. ────────────────────────────────────────────────────────────────────────────
  7663.  
  7664.      CMAKE error M0047
  7665.  
  7666.      source-file name is null
  7667.  
  7668.      The source-file name for a MASM command given in the make file is
  7669.      NULL.
  7670.  
  7671.      See: The MASM Command Line
  7672.  
  7673. ────────────────────────────────────────────────────────────────────────────
  7674.  
  7675.      CMAKE error M0048
  7676.  
  7677.      object-file name is null
  7678.  
  7679.      The object-file name for a MASM command given in the make file is
  7680.      NULL.
  7681.  
  7682.      See: The MASM Command Line
  7683.  
  7684. ────────────────────────────────────────────────────────────────────────────
  7685.  
  7686.      CMAKE error M0049
  7687.  
  7688.      unable to open source file 'filename'
  7689.  
  7690.      CMAKE could not open the source file for a MASM command given in
  7691.      the make file.  CMAKE opens source files in order to search for
  7692.      include statements.
  7693.  
  7694.      See: The MASM Command Line
  7695.  
  7696. ────────────────────────────────────────────────────────────────────────────
  7697.  
  7698.      CMAKE error M0050
  7699.  
  7700.      unable to get time stamp for source file 'filename'
  7701.  
  7702.      CMAKE could not obtain the time stamp for the source file of a
  7703.      MASM command given in the make file.
  7704.  
  7705.      See: The MASM Command Line
  7706.  
  7707. ────────────────────────────────────────────────────────────────────────────
  7708.  
  7709.      CMAKE error M0051
  7710.  
  7711.      not enough memory to create pseudofile 'filename'
  7712.  
  7713.      CMAKE ran out of memory while processing a MASM command given in
  7714.      the make file.
  7715.  
  7716.      Try splitting your make file into two smaller make files that are
  7717.      processed with two consecutive calls to CMAKE.
  7718.  
  7719. ────────────────────────────────────────────────────────────────────────────
  7720.  
  7721.      CMAKE error M0052
  7722.  
  7723.      include file 'filename' not found...
  7724.      in source directory 'sourcedirectoryname'  ...
  7725.      or INCLUDE environment variable paths...
  7726.      'includepaths'
  7727.  
  7728.      CMAKE could not find an include file while processing a MASM
  7729.      command given in the make file.  In this case, the include-file
  7730.      name was appended to the source-file's directory and to the
  7731.      directories specified in the INCLUDE environment variable.
  7732.  
  7733.      If your include file is located in the current directory, you
  7734.      should check to be sure that you have not set the configuration
  7735.      variable, search_current_dir_for_includes, to 'no' in your
  7736.      configuration file.
  7737.  
  7738.      See: search_current_dir_for_includes
  7739.           Switches for MASM
  7740.           How CMAKE Processes an Assembly-Language-Source File
  7741.  
  7742. ────────────────────────────────────────────────────────────────────────────
  7743.  
  7744.      CMAKE error M0053
  7745.  
  7746.      not enough memory to store include-file name 'filename'
  7747.  
  7748.      CMAKE ran out of memory while processing a MASM command given in
  7749.      the make file.
  7750.  
  7751.      Try splitting your make file into two smaller make files that are
  7752.      processed with two consecutive calls to CMAKE.
  7753.  
  7754. ────────────────────────────────────────────────────────────────────────────
  7755.  
  7756.      CMAKE error M0054
  7757.  
  7758.      include level exceeds 9
  7759.  
  7760.      Too many levels of nested include statements were used in the
  7761.      source file of a MASM command given in the make file.  (The source
  7762.      file itself is level 0, a file that is included in the source file
  7763.      is level 1, etc.)
  7764.  
  7765.      This usually indicates the presence of circular include
  7766.      statements.
  7767.  
  7768. ────────────────────────────────────────────────────────────────────────────
  7769.  
  7770.      CMAKE error M0055
  7771.  
  7772.      unable to open include file 'filename'
  7773.  
  7774.      CMAKE could not open an include file for a MASM command given in
  7775.      the make file.  When the configuration variable,
  7776.      scan_include_files_for_includes, is 'yes', CMAKE opens include
  7777.      files in order to search for include statements.
  7778.  
  7779.      If your include files do not have include statements, you should
  7780.      not set scan_include_files_for_includes to 'yes'.
  7781.  
  7782.      See: scan_include_files_for_includes
  7783.           Switches for MASM
  7784.           How CMAKE Processes an Assembly-Language-Source File
  7785.           REM
  7786.           Avoid Scanning Include Files for Includes
  7787.  
  7788. ────────────────────────────────────────────────────────────────────────────
  7789.  
  7790.      CMAKE error M0056
  7791.  
  7792.      source name is null
  7793.  
  7794.      The source name for a COPY command given in the make file is NULL.
  7795.  
  7796.      See: The COPY Command Line
  7797.  
  7798. ────────────────────────────────────────────────────────────────────────────
  7799.  
  7800.      CMAKE error M0057
  7801.  
  7802.      target name is null
  7803.  
  7804.      The target name for a COPY command given in the make file is NULL.
  7805.  
  7806.      See: The COPY Command Line
  7807.  
  7808. ────────────────────────────────────────────────────────────────────────────
  7809.  
  7810.      CMAKE error M0058
  7811.  
  7812.      source 'name' does not exist
  7813.  
  7814.      CMAKE could not find the source of a COPY command given in the
  7815.      make file.
  7816.  
  7817.      See: The COPY Command Line
  7818.  
  7819. ────────────────────────────────────────────────────────────────────────────
  7820.  
  7821.      CMAKE error M0059
  7822.  
  7823.      not enough memory to create pseudofile 'filename'
  7824.  
  7825.      CMAKE ran out of memory while processing a COPY command given in
  7826.      the make file.
  7827.  
  7828.      Try splitting your make file into two smaller make files that are
  7829.      processed with two consecutive calls to CMAKE.
  7830.  
  7831. ────────────────────────────────────────────────────────────────────────────
  7832.  
  7833.      CMAKE error M0060
  7834.  
  7835.      not enough memory to create pseudofile 'filename'
  7836.  
  7837.      CMAKE ran out of memory while processing a COPY command given in
  7838.      the make file.
  7839.  
  7840.      Try splitting your make file into two smaller make files that are
  7841.      processed with two consecutive calls to CMAKE.
  7842.  
  7843. ────────────────────────────────────────────────────────────────────────────
  7844.  
  7845.      CMAKE error M0061
  7846.  
  7847.      not enough memory to create pseudofile 'filename'
  7848.  
  7849.      CMAKE ran out of memory while processing a COPY command given in
  7850.      the make file.
  7851.  
  7852.      Try splitting your make file into two smaller make files that are
  7853.      processed with two consecutive calls to CMAKE.
  7854.  
  7855. ────────────────────────────────────────────────────────────────────────────
  7856.  
  7857.      CMAKE error M0062
  7858.  
  7859.      not enough memory to create pseudofile 'filename'
  7860.  
  7861.      CMAKE ran out of memory while processing a COPY command given in
  7862.      the make file.
  7863.  
  7864.      Try splitting your make file into two smaller make files that are
  7865.      processed with two consecutive calls to CMAKE.
  7866.  
  7867. ────────────────────────────────────────────────────────────────────────────
  7868.  
  7869.      CMAKE error M0063
  7870.  
  7871.      not enough memory to create pseudofile 'filename'
  7872.  
  7873.      CMAKE ran out of memory while processing a COPY command given in
  7874.      the make file.
  7875.  
  7876.      Try splitting your make file into two smaller make files that are
  7877.      processed with two consecutive calls to CMAKE.
  7878.  
  7879. ────────────────────────────────────────────────────────────────────────────
  7880.  
  7881.      CMAKE error M0064
  7882.  
  7883.      not enough memory to create pseudofile 'filename'
  7884.  
  7885.      CMAKE ran out of memory while processing a COPY command given in
  7886.      the make file.
  7887.  
  7888.      Try splitting your make file into two smaller make files that are
  7889.      processed with two consecutive calls to CMAKE.
  7890.  
  7891. ────────────────────────────────────────────────────────────────────────────
  7892.  
  7893.      CMAKE error M0065
  7894.  
  7895.      source-file name is null
  7896.  
  7897.      A source-file name for a user-defined command given in the make
  7898.      file is NULL.
  7899.  
  7900.      See: How CMAKE Processes the Command Line of a User-Defined Command
  7901.  
  7902. ────────────────────────────────────────────────────────────────────────────
  7903.  
  7904.      CMAKE error M0066
  7905.  
  7906.      target-file name is null
  7907.  
  7908.      A target-file name for a user-defined command given in the make
  7909.      file is NULL.
  7910.  
  7911.      See: How CMAKE Processes the Command Line of a User-Defined Command
  7912.  
  7913. ────────────────────────────────────────────────────────────────────────────
  7914.  
  7915.      CMAKE error M0067
  7916.  
  7917.      unable to get time stamp for source file 'filename'
  7918.  
  7919.      CMAKE could not obtain the time stamp for a source file of a
  7920.      user-defined command given in the make file.
  7921.  
  7922.      See: How CMAKE Processes the Command Line of a User-Defined Command
  7923.  
  7924. ────────────────────────────────────────────────────────────────────────────
  7925.  
  7926.      CMAKE error M0068
  7927.  
  7928.      not enough memory to store target-file name 'filename'
  7929.  
  7930.      CMAKE ran out of memory while processing a user-defined command
  7931.      given in the make file.
  7932.  
  7933.      Try splitting your make file into two smaller make files that are
  7934.      processed with two consecutive calls to CMAKE.
  7935.  
  7936. ────────────────────────────────────────────────────────────────────────────
  7937.  
  7938.      CMAKE error M0069
  7939.  
  7940.      not enough memory to create pseudofile 'filename'
  7941.  
  7942.      CMAKE ran out of memory while processing a user-defined command
  7943.      given in the make file.
  7944.  
  7945.      Try splitting your make file into two smaller make files that are
  7946.      processed with two consecutive calls to CMAKE.
  7947.  
  7948. ────────────────────────────────────────────────────────────────────────────
  7949.  
  7950.      CMAKE error M0070
  7951.  
  7952.      line too long in configuration file - length must be less than 255
  7953.  
  7954.      A line in the configuration file exceeds the maximum length limit.
  7955.  
  7956. ────────────────────────────────────────────────────────────────────────────
  7957.  
  7958.      CMAKE error M0072
  7959.  
  7960.      unrecognized configuration statement
  7961.  
  7962.      A configuration statement was not recognized to be comment,
  7963.      assignment statement, command-definition statement, or command-
  7964.      equivalence statement.
  7965.  
  7966.      See: The CMAKE Configuration File
  7967.  
  7968. ────────────────────────────────────────────────────────────────────────────
  7969.  
  7970.      CMAKE error M0073
  7971.  
  7972.      right hand side of assignment statement must be 'yes' or 'no'
  7973.  
  7974.      The right hand side of all assignment statements in the
  7975.      configuration file must be 'yes' or 'no'.
  7976.  
  7977.      See: Syntax of Assignment Statements
  7978.  
  7979. ────────────────────────────────────────────────────────────────────────────
  7980.  
  7981.      CMAKE error M0074
  7982.  
  7983.      not enough memory to store command definition
  7984.  
  7985.      CMAKE ran out of memory while processing a command-definition
  7986.      statement in the configuration file.
  7987.  
  7988.      Try eliminating any unnecessary command-definition and command-
  7989.      equivalence statements from your configuration file.
  7990.  
  7991. ────────────────────────────────────────────────────────────────────────────
  7992.  
  7993.      CMAKE error M0075
  7994.  
  7995.      command name is null
  7996.  
  7997.      The command name for a command-definition statement given in the
  7998.      configuration file is NULL.
  7999.  
  8000.      See: Command-Definition Statements
  8001.  
  8002. ────────────────────────────────────────────────────────────────────────────
  8003.  
  8004.      CMAKE error M0076
  8005.  
  8006.      command name too long - length must be no more than 8
  8007.  
  8008.      The command name for a command-definition statement given in the
  8009.      configuration file is too long.
  8010.  
  8011.      See: Command-Definition Statements
  8012.  
  8013. ────────────────────────────────────────────────────────────────────────────
  8014.  
  8015.      CMAKE error M0077
  8016.  
  8017.      invalid parameter type - type must be 'sp' or 'fp'
  8018.  
  8019.      An invalid parameter type was specified in a command-definition
  8020.      statement given in the configuration file.
  8021.  
  8022.      See: Command-Definition Statements
  8023.  
  8024. ────────────────────────────────────────────────────────────────────────────
  8025.  
  8026.      CMAKE error M0078
  8027.  
  8028.      missing file type delimiter '%' in stationary parameters
  8029.  
  8030.      There is a missing file type delimiter in the stationary
  8031.      parameters for a command-definition statement given in the
  8032.      configuration file.
  8033.  
  8034.      See: Command-Definition Statements
  8035.  
  8036. ────────────────────────────────────────────────────────────────────────────
  8037.  
  8038.      CMAKE error M0079
  8039.  
  8040.      missing file type delimiter '%' in floating parameters
  8041.  
  8042.      There is a missing file type delimiter in the floating parameters
  8043.      for a command-definition statement given in the configuration
  8044.      file.
  8045.  
  8046.      See: Command-Definition Statements
  8047.  
  8048. ────────────────────────────────────────────────────────────────────────────
  8049.  
  8050.      CMAKE error M0080
  8051.  
  8052.      invalid file type in stationary parameters - must be 'n', 's', or 't'
  8053.  
  8054.      An invalid file type code was used in the stationary parameters
  8055.      for a command-definition statement given in the configuration
  8056.      file.
  8057.  
  8058.      See: Command-Definition Statements
  8059.  
  8060. ────────────────────────────────────────────────────────────────────────────
  8061.  
  8062.      CMAKE error M0081
  8063.  
  8064.      invalid file type in floating parameters - must be 'n', 's', or 't'
  8065.  
  8066.      An invalid file type code was used in the floating parameters
  8067.      for a command-definition statement given in the configuration
  8068.      file.
  8069.  
  8070.      See: Command-Definition Statements
  8071.  
  8072. ────────────────────────────────────────────────────────────────────────────
  8073.  
  8074.      CMAKE error M0082
  8075.  
  8076.      open delimiter '[' expected after parameter type
  8077.  
  8078.      An open delimiter, '[', was expected in a command-definition
  8079.      statement given in the configuration file.
  8080.  
  8081.      See: Command-Definition Statements
  8082.  
  8083. ────────────────────────────────────────────────────────────────────────────
  8084.  
  8085.      CMAKE error M0083
  8086.  
  8087.      closing delimiter ']' missing
  8088.  
  8089.      A closing delimiter, ']', was expected in a command-definition
  8090.      statement given in the configuration file.
  8091.  
  8092.      See: Command-Definition Statements
  8093.  
  8094. ────────────────────────────────────────────────────────────────────────────
  8095.  
  8096.      CMAKE error M0084
  8097.  
  8098.      stationary parameters too long - must be sp['up-to-20-characters']
  8099.  
  8100.      The stationary parameter string in a command-definition statement
  8101.      given in the configuration file is too long.
  8102.  
  8103.      See: Command-Definition Statements
  8104.  
  8105. ────────────────────────────────────────────────────────────────────────────
  8106.  
  8107.      CMAKE error M0085
  8108.  
  8109.      floating parameters too long - must be fp['up-to-20-characters']
  8110.  
  8111.      The floating parameter string in a command-definition statement
  8112.      given in the configuration file is too long.
  8113.  
  8114.      See: Command-Definition Statements
  8115.  
  8116. ────────────────────────────────────────────────────────────────────────────
  8117.  
  8118.      CMAKE error M0086
  8119.  
  8120.      not enough memory to store command equivalence
  8121.  
  8122.      CMAKE ran out of memory while processing a command-equivalence
  8123.      statement in the configuration file.
  8124.  
  8125.      Try eliminating any unnecessary command-definition and command-
  8126.      equivalence statements from your configuration file.
  8127.  
  8128. ────────────────────────────────────────────────────────────────────────────
  8129.  
  8130.      CMAKE error M0087
  8131.  
  8132.      command name is null
  8133.  
  8134.      The command name for a command-equivalence statement given in the
  8135.      configuration file is NULL.
  8136.  
  8137.      See: Command-Equivalence Statements
  8138.  
  8139. ────────────────────────────────────────────────────────────────────────────
  8140.  
  8141.      CMAKE error M0088
  8142.  
  8143.      command name too long - length must be no more than 8
  8144.  
  8145.      The command name for a command-equivalence statement given in the
  8146.      configuration file is too long.
  8147.  
  8148.      See: Command-Equivalence Statements
  8149.  
  8150. ────────────────────────────────────────────────────────────────────────────
  8151.  
  8152.      CMAKE error M0089
  8153.  
  8154.      equivalent-command name is null
  8155.  
  8156.      The equivalent-command name (i.e. right hand side) for a command-
  8157.      equivalence statement given in the configuration file is NULL.
  8158.  
  8159.      See: Command-Equivalence Statements
  8160.  
  8161. ────────────────────────────────────────────────────────────────────────────
  8162.  
  8163.      CMAKE error M0090
  8164.  
  8165.      equivalent-command name too long - length must be no more than 8
  8166.  
  8167.      The equivalent-command name (i.e. right hand side) for a command-
  8168.      equivalence statement given in the configuration file is too long.
  8169.  
  8170.      See: Command-Equivalence Statements
  8171.  
  8172. ────────────────────────────────────────────────────────────────────────────
  8173.  
  8174.      CMAKE error M0091
  8175.  
  8176.      unrecognized equivalent command
  8177.  
  8178.      The equivalent-command name (i.e. right hand side) for a command-
  8179.      equivalence statement given in the configuration file is
  8180.      unrecognized.
  8181.  
  8182.      The equivalent-command name must be either an intrinsic command
  8183.      (e.g. CL, LINK, LIB, MASM,...) or a user-defined command that has
  8184.      been defined in a previous command-definition statement.
  8185.  
  8186.      See: Command-Equivalence Statements
  8187.  
  8188. ────────────────────────────────────────────────────────────────────────────
  8189.  
  8190.      CMAKE error M0092
  8191.  
  8192.      include file 'filename' not found...
  8193.      in INCLUDE environment variable paths...
  8194.      'includepaths'
  8195.  
  8196.      CMAKE could not find an include file while processing a MASM
  8197.      command given in the make file.  In this case, the include-file
  8198.      name was appended to the directories specified in the INCLUDE
  8199.      environment variable.
  8200.  
  8201.      If your include file is located in the current directory, you
  8202.      should check to be sure that you have not set the configuration
  8203.      variable, search_current_dir_for_includes, to 'no' in your
  8204.      configuration file.
  8205.  
  8206.      If your include file is located in the source-file's directory,
  8207.      you should check to be sure that you have not set the
  8208.      configuration variable, search_source_dir_for_includes, to 'no' in
  8209.      your configuration file.
  8210.  
  8211.      See: search_current_dir_for_includes
  8212.           search_source_dir_for_includes
  8213.           Switches for MASM
  8214.           How CMAKE Processes an Assembly-Language-Source File
  8215.  
  8216. ────────────────────────────────────────────────────────────────────────────
  8217.  
  8218.      CMAKE error M0093
  8219.  
  8220.      not enough memory to store environment string address
  8221.  
  8222.      CMAKE ran out of memory while processing a SET command given in
  8223.      the make file.
  8224.  
  8225.      Try splitting your make file into two smaller make files that are
  8226.      processed with two consecutive calls to CMAKE.
  8227.  
  8228. ────────────────────────────────────────────────────────────────────────────
  8229.  
  8230.      CMAKE error M0094
  8231.  
  8232.      not enough memory to store environment string
  8233.  
  8234.      CMAKE ran out of memory while processing a SET command given in
  8235.      the make file.
  8236.  
  8237.      Try splitting your make file into two smaller make files that are
  8238.      processed with two consecutive calls to CMAKE.
  8239.  
  8240. ────────────────────────────────────────────────────────────────────────────
  8241.  
  8242.      CMAKE error M0095
  8243.  
  8244.      environment variable name is null
  8245.  
  8246.      The environment variable name in a SET statement given in the make
  8247.      file is NULL.
  8248.  
  8249.      See: SET
  8250.  
  8251. ────────────────────────────────────────────────────────────────────────────
  8252.  
  8253.      CMAKE error M0098
  8254.  
  8255.      '(' expected after 'if'
  8256.  
  8257.      The character, '(', is missing in an if statement given in the make
  8258.      file.
  8259.  
  8260.      See: Syntax of the if Statement
  8261.  
  8262. ────────────────────────────────────────────────────────────────────────────
  8263.  
  8264.      CMAKE error M0100
  8265.  
  8266.      not enough memory to store target-file name 'filename'
  8267.  
  8268.      CMAKE ran out of memory while processing an if statement given in
  8269.      the make file.
  8270.  
  8271.      Try splitting your make file into two smaller make files that are
  8272.      processed with two consecutive calls to CMAKE.
  8273.  
  8274. ────────────────────────────────────────────────────────────────────────────
  8275.  
  8276.      CMAKE error M0101
  8277.  
  8278.      unable to get time stamp for source file 'filename'
  8279.  
  8280.      CMAKE could not obtain the time stamp for a source file of an
  8281.      if statement given in the make file.
  8282.  
  8283.      See: Syntax of the if Statement
  8284.  
  8285. ────────────────────────────────────────────────────────────────────────────
  8286.  
  8287.      CMAKE error M0102
  8288.  
  8289.      not enough memory to create pseudofile 'filename'
  8290.  
  8291.      CMAKE ran out of memory while processing an if statement given in
  8292.      the make file.
  8293.  
  8294.      Try splitting your make file into two smaller make files that are
  8295.      processed with two consecutive calls to CMAKE.
  8296.  
  8297. ────────────────────────────────────────────────────────────────────────────
  8298.  
  8299.      CMAKE error M0103
  8300.  
  8301.      line too long - length must be less than 255
  8302.  
  8303.      A command line given in the make file exceeds the maximum length
  8304.      limit.
  8305.  
  8306. ────────────────────────────────────────────────────────────────────────────
  8307.  
  8308.      CMAKE error M0104
  8309.  
  8310.      not enough memory to create predefined pseudofile 'filename'
  8311.  
  8312.      CMAKE ran out of memory while attempting to create the predefined
  8313.      pseudofile, "start.psf".
  8314.  
  8315.      You do not have enough memory available to execute CMAKE.
  8316.  
  8317. ────────────────────────────────────────────────────────────────────────────
  8318.  
  8319.      CMAKE error M0105
  8320.  
  8321.      comments may not be nested
  8322.  
  8323.      Nested C-style comments (/* */) were detected in the make file.
  8324.      C-style comments may not be nested.
  8325.  
  8326.      See: Comments in the Make File
  8327.  
  8328. ────────────────────────────────────────────────────────────────────────────
  8329.  
  8330.      CMAKE error M0106
  8331.  
  8332.      module-definition file 'filename' does not exist
  8333.  
  8334.      CMAKE could not find the module-definition file listed in the
  8335.      response file for a LINK command given in the make file.
  8336.  
  8337.      See: The LINK Command Line
  8338.  
  8339. ────────────────────────────────────────────────────────────────────────────
  8340.  
  8341.      CMAKE error M0107
  8342.  
  8343.      include file 'filename' not found in current directory...
  8344.      'currentdirectoryname', source directory 'sourcedirectoryname'  ...
  8345.      or INCLUDE environment variable paths...
  8346.      'includepaths'
  8347.  
  8348.      CMAKE could not find an include file while processing a MASM
  8349.      command given in the make file.  In this case, the include-file
  8350.      name was appended to the current directory, the source-file's
  8351.      directory and the directories specified in the INCLUDE
  8352.      environment variable.
  8353.  
  8354.      See: How CMAKE Processes an Assembly-Language-Source File
  8355.  
  8356. ────────────────────────────────────────────────────────────────────────────
  8357.  
  8358.      CMAKE error M0108
  8359.  
  8360.      include file 'filename' not found in current directory...
  8361.      'currentdirectoryname' or INCLUDE environment variable paths...
  8362.      'includepaths'
  8363.  
  8364.      CMAKE could not find an include file while processing a MASM
  8365.      command given in the make file.  In this case, the include-file
  8366.      name was appended to the current directory and to the directories
  8367.      specified in the INCLUDE environment variable.
  8368.  
  8369.      If your include file is located in the source-file's directory,
  8370.      you should check to be sure that you have not set the
  8371.      configuration variable, search_source_dir_for_includes, to 'no' in
  8372.      your configuration file.
  8373.  
  8374.      See: search_source_dir_for_includes
  8375.           Switches for MASM
  8376.           How CMAKE Processes an Assembly-Language-Source File
  8377.  
  8378. ────────────────────────────────────────────────────────────────────────────
  8379.  
  8380.      CMAKE error M0109
  8381.  
  8382.      resource-script-file name is null
  8383.  
  8384.      The resource-script-file name for an RC/C command given in the
  8385.      make file is NULL.
  8386.  
  8387.      See: The RC/C Command Line
  8388.  
  8389. ────────────────────────────────────────────────────────────────────────────
  8390.  
  8391.      CMAKE error M0110
  8392.  
  8393.      resource-file name is null
  8394.  
  8395.      The resource-file name for an RC/C command given in the make file
  8396.      is NULL.
  8397.  
  8398.      See: The RC/C Command Line
  8399.  
  8400. ────────────────────────────────────────────────────────────────────────────
  8401.  
  8402.      CMAKE error M0111
  8403.  
  8404.      unable to open resource-script file 'filename'
  8405.  
  8406.      CMAKE could not open the resource-script file for an RC/C command
  8407.      given in the make file.  CMAKE opens resource-script files in
  8408.      order to search for #include statements and resource-include
  8409.      statements.
  8410.  
  8411.      See: The RC/C Command Line
  8412.  
  8413. ────────────────────────────────────────────────────────────────────────────
  8414.  
  8415.      CMAKE error M0112
  8416.  
  8417.      unable to get time stamp for resource-script file 'filename'
  8418.  
  8419.      CMAKE could not obtain the time stamp for the resource-script file
  8420.      of an RC/C command given in the make file.
  8421.  
  8422.      See: The RC/C Command Line
  8423.  
  8424. ────────────────────────────────────────────────────────────────────────────
  8425.  
  8426.      CMAKE error M0113
  8427.  
  8428.      resource-file name is null
  8429.  
  8430.      The resource-file name for an RC/A command given in the make file
  8431.      is NULL.
  8432.  
  8433.      See: The RC/A Command Line
  8434.  
  8435. ────────────────────────────────────────────────────────────────────────────
  8436.  
  8437.      CMAKE error M0114
  8438.  
  8439.      executable-file name is null
  8440.  
  8441.      The executable-file name for an RC/A command given in the make
  8442.      file is NULL.
  8443.  
  8444.      See: The RC/A Command Line
  8445.  
  8446. ────────────────────────────────────────────────────────────────────────────
  8447.  
  8448.      CMAKE error M0115
  8449.  
  8450.      unable to get time stamp for executable file 'filename'
  8451.  
  8452.      CMAKE could not obtain the time stamp for the executable file of
  8453.      an RC/A command given in the make file.
  8454.  
  8455.      See: The RC/A Command Line
  8456.  
  8457. ────────────────────────────────────────────────────────────────────────────
  8458.  
  8459.      CMAKE error M0116
  8460.  
  8461.      unable to get time stamp for resource file 'filename'
  8462.  
  8463.      CMAKE could not obtain the time stamp for the resource file of an
  8464.      RC/A command given in the make file.
  8465.  
  8466.      See: The RC/A Command Line
  8467.  
  8468. ────────────────────────────────────────────────────────────────────────────
  8469.  
  8470.      CMAKE error M0117
  8471.  
  8472.      target-file name is null
  8473.  
  8474.      The target-file name for an RC/W command given in the make file is
  8475.      NULL.
  8476.  
  8477.      See: The RC/W Command Line
  8478.  
  8479. ────────────────────────────────────────────────────────────────────────────
  8480.  
  8481.      CMAKE error M0118
  8482.  
  8483.      unable to get time stamp for target file 'filename'
  8484.  
  8485.      CMAKE could not obtain the time stamp for the target file of an
  8486.      RC/W command given in the make file.
  8487.  
  8488.      See: The RC/W Command Line
  8489.  
  8490. ────────────────────────────────────────────────────────────────────────────
  8491.  
  8492.      CMAKE error M0119
  8493.  
  8494.      cannot determine RC operation
  8495.  
  8496.      CMAKE could not determine the operation type of an RC command
  8497.      given in the make file.
  8498.  
  8499.      See: RC Operations
  8500.           The RC/C Command Line
  8501.           The RC/A Command Line
  8502.           The RC/W Command Line
  8503.  
  8504. ────────────────────────────────────────────────────────────────────────────
  8505.  
  8506.      CMAKE error M0120
  8507.  
  8508.      not enough memory to create pseudofile 'filename'
  8509.  
  8510.      CMAKE ran out of memory while processing an RC command given in
  8511.      the make file.
  8512.  
  8513.      Try splitting your make file into two smaller make files that are
  8514.      processed with two consecutive calls to CMAKE.
  8515.  
  8516. ────────────────────────────────────────────────────────────────────────────
  8517.  
  8518.      CMAKE error M0121
  8519.  
  8520.      include file 'filename' not found in current directory...
  8521.      'currentdirectoryname' or INCLUDE environment variable paths...
  8522.      'includepaths'
  8523.  
  8524.      CMAKE could not find an include file while processing an RC/C
  8525.      command given in the make file.  In this case, the include-file
  8526.      name was appended to the current directory and to the directories
  8527.      specified in the INCLUDE environment variable.
  8528.  
  8529.      See: How CMAKE Processes a Resource-Script File
  8530.  
  8531. ────────────────────────────────────────────────────────────────────────────
  8532.  
  8533.      CMAKE error M0122
  8534.  
  8535.      include file 'filename' not found...
  8536.      in INCLUDE environment variable paths...
  8537.      'includepaths'
  8538.  
  8539.      CMAKE could not find an include file while processing an RC/C
  8540.      command given in the make file.  In this case, the include-file
  8541.      name was appended to the directories specified in the INCLUDE
  8542.      environment variable.
  8543.  
  8544.      If your include file is located in the current directory, you
  8545.      should check to be sure that you have not set the configuration
  8546.      variable, search_current_dir_for_includes, to 'no' in your
  8547.      configuration file.
  8548.  
  8549.      See: search_current_dir_for_includes
  8550.           Switches for RC/C
  8551.           How CMAKE Processes a Resource-Script File
  8552.  
  8553. ────────────────────────────────────────────────────────────────────────────
  8554.  
  8555.      CMAKE error M0123
  8556.  
  8557.      not enough memory to store include-file name 'filename'
  8558.  
  8559.      CMAKE ran out of memory while processing an RC/C command given in
  8560.      the make file.
  8561.  
  8562.      Try splitting your make file into two smaller make files that are
  8563.      processed with two consecutive calls to CMAKE.
  8564.  
  8565. ────────────────────────────────────────────────────────────────────────────
  8566.  
  8567.      CMAKE error M0124
  8568.  
  8569.      include level exceeds 9
  8570.  
  8571.      Too many levels of nested include statements were used in the
  8572.      resource-script file of an RC/C command given in the make file.
  8573.      (The resource-script file itself is level 0, a file that is
  8574.      included in the resource-script file is level 1, etc.)
  8575.  
  8576.      This usually indicates the presence of circular include
  8577.      statements.
  8578.  
  8579. ────────────────────────────────────────────────────────────────────────────
  8580.  
  8581.      CMAKE error M0125
  8582.  
  8583.      unable to open include file 'filename'
  8584.  
  8585.      CMAKE could not open an include file for an RC/C command given in
  8586.      the make file.  When the configuration variable,
  8587.      scan_include_files_for_includes, is 'yes', CMAKE opens include
  8588.      files in order to search for #include statements and resource-
  8589.      include statements.
  8590.  
  8591.      If your include files do not have include statements, you should
  8592.      not set scan_include_files_for_includes to 'yes'.
  8593.  
  8594.      See: scan_include_files_for_includes
  8595.           Switches for RC/C
  8596.           How CMAKE Processes a Resource-Script File
  8597.           REM
  8598.           Avoid Scanning Include Files for Includes
  8599.  
  8600. ────────────────────────────────────────────────────────────────────────────
  8601.  
  8602.      CMAKE error M0127
  8603.  
  8604.      unexpected end-of-file
  8605.  
  8606.      An unexpected end-of-file was reached while processing the
  8607.      response file for a LIB command given in the make file.
  8608.  
  8609.      Check to be sure that the last line in the response file does not
  8610.      end with the character, '&'.
  8611.  
  8612.      See: The LIB Command Line
  8613.  
  8614. ────────────────────────────────────────────────────────────────────────────
  8615.  
  8616.      CMAKE error M0128
  8617.  
  8618.      unexpected end-of-file
  8619.  
  8620.      An unexpected end-of-file was reached while processing the
  8621.      response file for a LIB command given in the make file.
  8622.  
  8623.      Check to be sure that the last line in the response file does not
  8624.      end with the character, '&'.
  8625.  
  8626.      See: The LIB Command Line
  8627.  
  8628. ────────────────────────────────────────────────────────────────────────────
  8629.  
  8630.      CMAKE error M0129
  8631.  
  8632.      unexpected end-of-file
  8633.  
  8634.      An unexpected end-of-file was reached while processing the
  8635.      response file for a LINK command given in the make file.
  8636.  
  8637.      Check to be sure that the executable-file name has not been
  8638.      omitted from the response file.
  8639.  
  8640.      Check to be sure that the last line in the response file does not
  8641.      end with the character, '+'.
  8642.  
  8643.      See: The LINK Command Line
  8644.  
  8645. ────────────────────────────────────────────────────────────────────────────
  8646.  
  8647.      CMAKE error M0130
  8648.  
  8649.      unexpected end-of-file
  8650.  
  8651.      An unexpected end-of-file was reached while processing the
  8652.      response file for a LINK command given in the make file.
  8653.  
  8654.      Check to be sure that the last line in the response file is
  8655.      terminated with the character, ';'.
  8656.  
  8657.      See: The LINK Command Line
  8658.  
  8659. ────────────────────────────────────────────────────────────────────────────
  8660.  
  8661.      CMAKE error M0131
  8662.  
  8663.      unexpected end-of-file
  8664.  
  8665.      An unexpected end-of-file was reached while processing the
  8666.      response file for a LINK command given in the make file.
  8667.  
  8668.      Check to be sure that the last line in the response file is
  8669.      terminated with the character, ';'.
  8670.  
  8671.      See: The LINK Command Line
  8672.  
  8673. ────────────────────────────────────────────────────────────────────────────
  8674.  
  8675.      CMAKE error M0132
  8676.  
  8677.      unexpected end-of-file
  8678.  
  8679.      An unexpected end-of-file was reached while processing the
  8680.      response file for a LINK command given in the make file.
  8681.  
  8682.      Check to be sure that the last line in the response file is
  8683.      terminated with the character, ';'.
  8684.  
  8685.      See: The LINK Command Line
  8686.  
  8687. ────────────────────────────────────────────────────────────────────────────
  8688.  
  8689.      CMAKE error M0133
  8690.  
  8691.      unexpected end-of-file
  8692.  
  8693.      An unexpected end-of-file was reached while processing the
  8694.      response file for a LINK command given in the make file.
  8695.  
  8696.      Check to be sure that the last line in the response file does not
  8697.      end with the character, '+'.
  8698.  
  8699.      See: The LINK Command Line
  8700.  
  8701. ────────────────────────────────────────────────────────────────────────────
  8702.  
  8703.      CMAKE error M1000
  8704.  
  8705.      token truncated to 'token' - maximum token length is 67
  8706.  
  8707.      There is a token in the make file that is too long.
  8708.  
  8709. ────────────────────────────────────────────────────────────────────────────
  8710.  
  8711.      CMAKE error M1001
  8712.  
  8713.      unexpected end-of-file
  8714.  
  8715.      An unexpected end-of-file was reached while processing an if
  8716.      statement given in the make file.
  8717.  
  8718.      See: Syntax of the if Statement
  8719.  
  8720. ────────────────────────────────────────────────────────────────────────────
  8721.  
  8722.      CMAKE error M1002
  8723.  
  8724.      token truncated to 'token' - maximum token length is 67
  8725.  
  8726.      There is a token in the make file that is too long.  This was
  8727.      discovered while processing an if statement in the make file.
  8728.  
  8729. ────────────────────────────────────────────────────────────────────────────
  8730.  
  8731.      CMAKE error M1003
  8732.  
  8733.      unexpected end-of-file
  8734.  
  8735.      An unexpected end-of-file was reached while processing an if
  8736.      statement given in the make file.
  8737.  
  8738.      See: Syntax of the if Statement
  8739.  
  8740. ────────────────────────────────────────────────────────────────────────────
  8741.  
  8742.      CMAKE error M1004
  8743.  
  8744.      token truncated to 'token' - maximum token length is 67
  8745.  
  8746.      There is a token in the make file that is too long.  This was
  8747.      discovered while processing an if statement in the make file.
  8748.  
  8749. ────────────────────────────────────────────────────────────────────────────
  8750.  
  8751.      CMAKE error M1005
  8752.  
  8753.      unexpected end-of-file
  8754.  
  8755.      An unexpected end-of-file was reached while processing an if
  8756.      statement given in the make file.
  8757.  
  8758.      See: Syntax of the if Statement
  8759.  
  8760. ────────────────────────────────────────────────────────────────────────────
  8761.  
  8762.      CMAKE error M1006
  8763.  
  8764.      token truncated to 'token' - maximum token length is 67
  8765.  
  8766.      There is a token in the make file that is too long.  This was
  8767.      discovered while processing an if statement in the make file.
  8768.  
  8769. ────────────────────────────────────────────────────────────────────────────
  8770.  
  8771.      CMAKE error M1007
  8772.  
  8773.      unexpected end-of-file
  8774.  
  8775.      An unexpected end-of-file was reached while processing an if
  8776.      statement given in the make file.
  8777.  
  8778.      See: Syntax of the if Statement
  8779.  
  8780. ────────────────────────────────────────────────────────────────────────────
  8781.  
  8782.      CMAKE error M1008
  8783.  
  8784.      token truncated to 'token' - maximum token length is 67
  8785.  
  8786.      There is a token in the make file that is too long.  This was
  8787.      discovered while processing an if statement in the make file.
  8788.  
  8789. ────────────────────────────────────────────────────────────────────────────
  8790.  
  8791.      CMAKE error M1009
  8792.  
  8793.      unexpected end-of-file
  8794.  
  8795.      An unexpected end-of-file was reached while processing an if
  8796.      statement given in the make file.
  8797.  
  8798.      See: Syntax of the if Statement
  8799.  
  8800. ────────────────────────────────────────────────────────────────────────────
  8801.  
  8802.      CMAKE error M1010
  8803.  
  8804.      token truncated to 'token' - maximum token length is 67
  8805.  
  8806.      There is a token in the make file that is too long.  This was
  8807.      discovered while processing an if statement in the make file.
  8808.  
  8809. ────────────────────────────────────────────────────────────────────────────
  8810.  
  8811.      CMAKE error M1011
  8812.  
  8813.      unexpected end-of-file
  8814.  
  8815.      An unexpected end-of-file was reached while processing an if
  8816.      statement given in the make file.
  8817.  
  8818.      Check to be sure that you have not omitted the terminating
  8819.      bracket, '}', from an if statement in your make file.  Check your
  8820.      last if statement first.
  8821.  
  8822.      See: Syntax of the if Statement
  8823.  
  8824. ────────────────────────────────────────────────────────────────────────────
  8825.  
  8826.      CMAKE error M1012
  8827.  
  8828.      token truncated to 'token' - maximum token length is 67
  8829.  
  8830.      There is a token in the make file that is too long.  This was
  8831.      discovered while processing an if statement in the make file.
  8832.  
  8833. ─────Copyright and Trademarks───────────────────────────────────────────────
  8834.  
  8835.      Copyright
  8836.  
  8837.      (c) Copyright John Greschak 1991.
  8838.  
  8839.      Registered Trademarks
  8840.  
  8841.      Microsoft and MS-DOS are registered trademarks of Microsoft
  8842.      Corporation.
  8843.  
  8844.      CompuServe is a registered trademark of CompuServe, Inc.
  8845.  
  8846.      BRIEF is a registered trademark of UnderWare, Inc.
  8847.  
  8848.      Trademarks
  8849.  
  8850.      Windows is a trademark of Microsoft Corporation.
  8851.  
  8852.      Epsilon is a trademark of Lugaru Software, Ltd.
  8853.  
  8854. ──CMAKE Index───────────────────────────────────────────────────────────────
  8855.  
  8856.   /a option                Display Information about CMAKE
  8857.  
  8858.   asm_include_on           asm_include_on
  8859.                            Switches for MASM
  8860.                            How CMAKE Processes an ASM-Source File
  8861.  
  8862.   assignment statements    Assignment Statements in the Configuration File
  8863.  
  8864.   author                   Technical Support for CMAKE
  8865.                            Display Information about CMAKE
  8866.  
  8867.   Boolean variables        Boolean Variables
  8868.  
  8869.   BRIEF                    Error Messages (Viewing)
  8870.                            Using CMAKE with BRIEF
  8871.  
  8872.   c_include_""_on          c_include_""_on
  8873.                            Switches for CL
  8874.                            How CMAKE Processes a C-Source File
  8875.  
  8876.   c_include_<>_on          c_include_<>_on
  8877.                            Switches for CL
  8878.                            Avoid Checking System-Include Dependencies
  8879.                            How CMAKE Processes a C-Source File
  8880.  
  8881.   CL                       CL
  8882.  
  8883.   CMAKE_CFG environment variable
  8884.                            How CMAKE Locates the Configuration File
  8885.  
  8886.   /* CMAKE - INCLUDE END */
  8887.                            How CMAKE Processes a C-Source File
  8888.                            Switches for CL
  8889.                            How CMAKE Processes a Resource-Script File
  8890.                            Switches for RC/C
  8891.                            Helpful Hints for RC/C
  8892.                            Use the End-of-Includes Comment
  8893.  
  8894.   /* CMAKE - INCLUDE "" ON/OFF */
  8895.                            How CMAKE Processes a C-Source File
  8896.                            Switches for CL
  8897.                            Some Restrictions on CL
  8898.                            How CMAKE Processes a Resource-Script File
  8899.                            Switches for RC/C
  8900.                            Some Restrictions on RC/C
  8901.                            rc_include_""_on
  8902.                            c_include_""_on
  8903.  
  8904.   /* CMAKE - INCLUDE <> ON/OFF */
  8905.                            How CMAKE Processes a C-Source File
  8906.                            Switches for CL
  8907.                            How CMAKE Processes a Resource-Script File
  8908.                            Switches for RC/C
  8909.                            c_include_<>_on
  8910.                            rc_include_<>_on
  8911.                            Avoid Checking System-Include Dependencies
  8912.  
  8913.   /* CMAKE - INCLUDE RESOURCE ON/OFF */
  8914.                            How CMAKE Processes a Resource-Script File
  8915.                            Switches for RC/C
  8916.                            Helpful Hints for RC/C
  8917.                            rc_include_resource_on
  8918.  
  8919.   ; CMAKE - INCLUDE END    How CMAKE Processes an ASM-Source File
  8920.                            Switches for MASM
  8921.                            Use the End-of-Includes Comment
  8922.  
  8923.   ; CMAKE - INCLUDE ON/OFF How CMAKE Processes an ASM-Source File
  8924.                            Switches for MASM
  8925.                            asm_include_on
  8926.  
  8927.   "cmake.cfg"              How CMAKE Locates the Configuration File
  8928.                            Help CMAKE Find Configuration Data Quickly
  8929.  
  8930.   command-definition statements
  8931.                            Command-Definition Statements
  8932.                            Description of User-Defined Commands
  8933.                            Verbose Output - User-Defined Commands
  8934.                            User-Defined Commands: Pseudofiles: Examples
  8935.  
  8936.   command-equivalence statements
  8937.                            Command-Equivalence Statements
  8938.                            Description of Equivalent Commands
  8939.                            Verbose Output - Equivalent Commands
  8940.  
  8941.   command-line options     The CMAKE Command Line
  8942.  
  8943.   commands                 Make-File Commands
  8944.  
  8945.   comments                 Comments in the Make File
  8946.                            Comments in the Configuration File
  8947.  
  8948.   COMSPEC environment variable
  8949.                            CMAKE error M0010
  8950.  
  8951.   configuration file       The CMAKE Configuration File
  8952.  
  8953.   COPY                     COPY
  8954.  
  8955.   dependencies             Introduction
  8956.                            Description of the if Statement
  8957.  
  8958.   display_execution_time   display_execution_time
  8959.  
  8960.   display_output_file_commands
  8961.                            display_output_file_commands
  8962.  
  8963.   editors                  Error Messages
  8964.                            Using CMAKE with Your Editor
  8965.                            The RC/C Command Line
  8966.  
  8967.   environment variables    How CMAKE Locates the Configuration File
  8968.  
  8969.   Epsilon                  Error Messages
  8970.                            Using CMAKE with Epsilon
  8971.  
  8972.   equivalent commands      Equivalent Commands
  8973.  
  8974.   error messages           Error Messages
  8975.                            Using CMAKE with Your Editor
  8976.                            CMAKE Errors
  8977.  
  8978.   execution time           display_execution_time
  8979.                            Overview of Optimization Techniques for CMAKE
  8980.                            Interpreting the Output of CMAKE
  8981.  
  8982.   exit codes               CMAKE Exit Codes
  8983.  
  8984.   floating parameters      Command-Definition Statements
  8985.                            Processing User-Defined Commands
  8986.                            Verbose Output - User-Defined Commands
  8987.  
  8988.   Greschak                 Introduction
  8989.                            Technical Support for CMAKE
  8990.  
  8991.   /help option             Display Help on CMAKE
  8992.  
  8993.   if statements            The if Statement
  8994.  
  8995.   IMPLIB                   Command-Definition Statements: Examples
  8996.  
  8997.   INCLUDE environment variable
  8998.                            How CMAKE Processes a C-Source File
  8999.                            Switches for CL
  9000.                            How CMAKE Processes an ASM-Source File
  9001.                            Switches for MASM
  9002.                            How CMAKE Processes a Resource-Script File
  9003.                            Switches for RC/C
  9004.                            search_source_dir_for_includes
  9005.                            search_current_dir_for_includes
  9006.  
  9007.   include statements       How CMAKE Processes a C-Source File
  9008.                            How CMAKE Processes an ASM-Source File
  9009.                            How CMAKE Processes a Resource-Script File
  9010.  
  9011.   input file               Interpreting the Output of CMAKE
  9012.  
  9013.   intrinsic commands       Intrinsic Commands
  9014.  
  9015.   LIB                      LIB
  9016.  
  9017.   LIB environment variable The LINK Command Line
  9018.                            Samples: Microsoft Windows SDK
  9019.  
  9020.   LINK                     LINK
  9021.  
  9022.   local-include statements How CMAKE Processes a C-Source File
  9023.                            How CMAKE Processes a Resource-Script File
  9024.  
  9025.   "makefile"               Specify the Make-File Name
  9026.  
  9027.   "makefile.bat"           How CMAKE Works
  9028.                            Interpreting the Output of CMAKE
  9029.                            Suppress Command Execution by CMAKE
  9030.                            Specify the Path of "makefile.bat"
  9031.                            run_output_file
  9032.                            display_output_file_commands
  9033.                            Have CMAKE Put "makefile.bat" on a RAM Drive
  9034.  
  9035.   make file                Creating a Make File
  9036.                            Specify the Make-File Name
  9037.                            The Make File
  9038.  
  9039.   MASM                     MASM
  9040.  
  9041.   The Microsoft Editor     Error Messages
  9042.                            Using CMAKE with The Microsoft Editor
  9043.  
  9044.   /n option                Suppress Command Execution by CMAKE
  9045.                            run_output_file
  9046.  
  9047.   neutral files            Command-Definition Statements
  9048.                            Processing User-Defined Commands
  9049.  
  9050.   /o option                Specify the Path of "makefile.bat"
  9051.                            The CMAKE Command Line: Examples
  9052.                            Have CMAKE Put "makefile.bat" on a RAM Drive
  9053.  
  9054.   options                  The CMAKE Command Line
  9055.  
  9056.   output                   Interpreting the Output of CMAKE
  9057.                            Select Verbose Diagnostic Output from CMAKE
  9058.                            Avoid Using the Verbose Output Format for CMAKE
  9059.                            Redirect CMAKE Output to a File on a RAM Drive
  9060.  
  9061.   output file              Interpreting the Output of CMAKE
  9062.  
  9063.   PATH environment variable
  9064.                            Display Help on CMAKE
  9065.  
  9066.   predefined pseudofiles   Pseudofiles for User-Defined Commands
  9067.                            Pseudofiles for the if Statement
  9068.  
  9069.   pseudofiles              How CMAKE Works
  9070.  
  9071.   QH                       Display Help on CMAKE
  9072.  
  9073.   QuickHelp                Display Help on CMAKE
  9074.  
  9075.   RC                       RC
  9076.  
  9077.   RC/A                     RC/A
  9078.  
  9079.   RC/C                     RC/C
  9080.  
  9081.   RC/CA                    RC/CA
  9082.  
  9083.   RC/W                     RC/W
  9084.  
  9085.   rc_include_""_on         rc_include_""_on
  9086.                            Switches for RC/C
  9087.                            How CMAKE Processes a Resource-Script File
  9088.  
  9089.   rc_include_<>_on         rc_include_<>_on
  9090.                            Switches for RC/C
  9091.                            How CMAKE Processes a Resource-Script File
  9092.  
  9093.   rc_include_resource_on   rc_include_resource_on
  9094.                            Switches for RC/C
  9095.                            How CMAKE Processes a Resource-Script File
  9096.  
  9097.   registered users         Display Information about CMAKE
  9098.  
  9099.   REM                      REM
  9100.  
  9101.   REM CMAKE - SCAN INCLUDE FILES FOR INCLUDES ON/OFF
  9102.                            Switches for CL
  9103.                            How CMAKE Processes a C-Source File
  9104.                            Switches for MASM
  9105.                            How CMAKE Processes an ASM-Source File
  9106.                            Switches for RC/C
  9107.                            How CMAKE Processes a Resource-Script File
  9108.                            REM
  9109.                            scan_include_files_for_includes
  9110.                            Avoid Scanning Include Files for Includes
  9111.  
  9112.   resource-include statements
  9113.                            How CMAKE Processes a Resource-Script File
  9114.  
  9115.   response files           The LIB Command Line
  9116.                            The LINK Command Line
  9117.  
  9118.   run_output_file          run_output_file
  9119.                            Suppress Command Execution by CMAKE
  9120.  
  9121.   scan_include_files_for_includes
  9122.                            scan_include_files_for_includes
  9123.                            Switches for CL
  9124.                            How CMAKE Processes a C-Source File
  9125.                            Switches for MASM
  9126.                            How CMAKE Processes an ASM-Source File
  9127.                            Switches for RC/C
  9128.                            How CMAKE Processes a Resource-Script File
  9129.                            REM
  9130.                            Avoid Scanning Include Files for Includes
  9131.  
  9132.   search_current_dir_for_includes
  9133.                            search_current_dir_for_includes
  9134.                            Switches for MASM
  9135.                            How CMAKE Processes an ASM-Source File
  9136.                            Switches for RC/C
  9137.                            How CMAKE Processes a Resource-Script File
  9138.                            Help CMAKE Find Include Files Quickly
  9139.  
  9140.   search_source_dir_for_includes
  9141.                            search_source_dir_for_includes
  9142.                            Switches for CL
  9143.                            How CMAKE Processes a C-Source File
  9144.                            Switches for MASM
  9145.                            How CMAKE Processes an ASM-Source File
  9146.                            Help CMAKE Find Include Files Quickly
  9147.  
  9148.   sensitivity to include statements
  9149.                            How CMAKE Processes a C-Source File
  9150.                            How CMAKE Processes an ASM-Source File
  9151.                            How CMAKE Processes a Resource-Script File
  9152.  
  9153.   SET                      SET
  9154.  
  9155.   shareware                Display Information about CMAKE
  9156.  
  9157.   SORT                     Command-Definition Statements: Examples
  9158.  
  9159.   source files             How CMAKE Works
  9160.  
  9161.   "start.psf"              Pseudofiles for User-Defined Commands
  9162.                            Pseudofiles for the if Statement
  9163.  
  9164.   stationary parameters    Command-Definition Statements
  9165.                            Processing User-Defined Commands
  9166.                            Verbose Output - User-Defined Commands
  9167.  
  9168.   system-include statements
  9169.                            How CMAKE Processes a C-Source File
  9170.                            How CMAKE Processes a Resource-Script File
  9171.  
  9172.   target files             How CMAKE Works
  9173.  
  9174.   technical support        Technical Support for CMAKE
  9175.  
  9176.   time stamps              How CMAKE Works
  9177.  
  9178.   unrecognized commands    Unrecognized Commands in the Make File
  9179.  
  9180.   user-defined commands    User-Defined Commands
  9181.  
  9182.   /v option                Select Verbose Diagnostic Output from CMAKE
  9183.                            Avoid Using the Verbose Output Format for CMAKE
  9184.  
  9185.   variables                Boolean Variables
  9186.  
  9187.   %n                       Command-Definition Statements
  9188.  
  9189.   %s                       Command-Definition Statements
  9190.                            Command-Definition Statements: Examples
  9191.                            Verbose Output - User-Defined Commands
  9192.                            User-Defined Commands: Pseudofiles: Examples
  9193.  
  9194.   %t                       Command-Definition Statements
  9195.                            Command-Definition Statements: Examples
  9196.                            Verbose Output - User-Defined Commands
  9197.                            User-Defined Commands: Pseudofiles: Examples
  9198.  
  9199.   /? option                Display Command-Line Help for CMAKE
  9200.  
  9201.   " "                      How CMAKE Processes a C-Source File
  9202.                            How CMAKE Processes a Resource-Script File
  9203.  
  9204.   < >                      How CMAKE Processes a C-Source File
  9205.                            How CMAKE Processes a Resource-Script File
  9206.  
  9207.   <                        The if Statement
  9208.  
  9209.   >                        Interpreting the Output of CMAKE
  9210.  
  9211.   ;                        Comments in the Configuration File
  9212.  
  9213.   /                        CMAKE Options
  9214.  
  9215.   -                        CMAKE Options
  9216.  
  9217.   //                       Comments in the Make File
  9218.  
  9219.   /* */                    Comments in the Make File
  9220.  
  9221.   { }                      The if Statement
  9222.  
  9223.   ( )                      The if Statement
  9224.