updated for 0.2

This commit is contained in:
Ken Martin 2001-06-27 13:16:57 -04:00
parent 5579ee31d5
commit be74431f22
1 changed files with 186 additions and 165 deletions

349
CMake.rtf
View File

@ -1,10 +1,10 @@
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f23\froman\fcharset128\fprq1{\*\panose 00000000000000000000}MS Mincho{\*\falt MS ??};}
{\f28\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f50\froman\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho;}{\f52\froman\fcharset238\fprq2 Times New Roman CE;}{\f53\froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f55\froman\fcharset161\fprq2 Times New Roman Greek;}{\f56\froman\fcharset162\fprq2 Times New Roman Tur;}{\f57\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f58\froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f59\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f68\fmodern\fcharset238\fprq1 Courier New CE;}{\f69\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f71\fmodern\fcharset161\fprq1 Courier New Greek;}{\f72\fmodern\fcharset162\fprq1 Courier New Tur;}
{\f73\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f74\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f75\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f276\fswiss\fcharset238\fprq2 Verdana CE;}{\f277\fswiss\fcharset204\fprq2 Verdana Cyr;}
{\f279\fswiss\fcharset161\fprq2 Verdana Greek;}{\f280\fswiss\fcharset162\fprq2 Verdana Tur;}{\f283\fswiss\fcharset186\fprq2 Verdana Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
{\f28\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f29\froman\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho;}{\f55\froman\fcharset238\fprq2 Times New Roman CE;}{\f56\froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f58\froman\fcharset161\fprq2 Times New Roman Greek;}{\f59\froman\fcharset162\fprq2 Times New Roman Tur;}{\f60\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f61\froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\f62\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f71\fmodern\fcharset238\fprq1 Courier New CE;}{\f72\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f74\fmodern\fcharset161\fprq1 Courier New Greek;}{\f75\fmodern\fcharset162\fprq1 Courier New Tur;}
{\f76\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f77\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f78\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f279\fswiss\fcharset238\fprq2 Verdana CE;}{\f280\fswiss\fcharset204\fprq2 Verdana Cyr;}
{\f282\fswiss\fcharset161\fprq2 Verdana Greek;}{\f283\fswiss\fcharset162\fprq2 Verdana Tur;}{\f286\fswiss\fcharset186\fprq2 Verdana Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;
\red192\green192\blue192;}{\stylesheet{\ql \li1170\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin1170\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{
\s1\ql \li1170\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin1170\itap0 \b\fs36\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{
@ -99,13 +99,13 @@
\listoverridecount0\ls7}{\listoverride\listid199510865\listoverridecount0\ls8}{\listoverride\listid908342481\listoverridecount0\ls9}{\listoverride\listid1336492021\listoverridecount0\ls10}{\listoverride\listid1592200748\listoverridecount0\ls11}
{\listoverride\listid1724867039\listoverridecount0\ls12}{\listoverride\listid2012557743\listoverridecount0\ls13}{\listoverride\listid563219625\listoverridecount0\ls14}{\listoverride\listid1023172156\listoverridecount0\ls15}{\listoverride\listid1652054978
\listoverridecount0\ls16}{\listoverride\listid1431699610\listoverridecount0\ls17}{\listoverride\listid330572609\listoverridecount0\ls18}{\listoverride\listid489949201\listoverridecount0\ls19}}{\info{\title CMake Documentation}{\author Ken Martin}
{\operator Ken Martin}{\creatim\yr2001\mo6\dy7\hr15\min36}{\revtim\yr2001\mo6\dy7\hr15\min36}{\printim\yr2000\mo11\dy2\hr9\min34}{\version2}{\edmins0}{\nofpages11}{\nofwords3721}{\nofchars20249}{\*\company Kitware Inc.}{\nofcharsws23771}{\vern8279}}
\endnotes\aendnotes\aftnstart0\hyphhotz0\aftnnar\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\lytprtmet\hyphcaps0\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0
{\operator Ken Martin}{\creatim\yr2001\mo6\dy7\hr15\min36}{\revtim\yr2001\mo6\dy27\hr13\min12}{\printim\yr2000\mo11\dy2\hr9\min34}{\version4}{\edmins9}{\nofpages12}{\nofwords3747}{\nofchars21362}{\*\company Kitware Inc.}{\nofcharsws26234}{\vern8279}}
\widowctrl\ftnbj\aendnotes\aftnstart0\hyphhotz0\aftnnar\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\lytprtmet\hyphcaps0\horzdoc\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow0\dgvshow0
\jexpand\viewkind1\viewscale75\pgbrdrhead\pgbrdrfoot\bdrrlswsix\nolnhtadjtbl \fet0\sectd \linex0\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3
\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}
{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\s1\ql \li1170\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin-720\lin1170\itap0 \b\fs36\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\fs20\lang1024\langfe1024\noproof
{\shp{\*\shpinst\shpleft-3600\shptop0\shpright3600\shpbottom1744\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr1\shpwrk0\shpfblwtxt0\shpz0\shplid1027{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
{\shp{\*\shpinst\shpleft-3600\shptop0\shpright3600\shpbottom1744\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr1\shpwrk0\shpfblwtxt0\shpz0\shplid1026{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}
{\sp{\sn pib}{\sv {\pict\picscalex242\picscaley242\piccropl0\piccropr0\piccropt0\piccropb0\picw5249\pich1270\picwgoal2976\pichgoal720\jpegblip\bliptag703103714{\*\blipuid 29e882e207abc915b98d44ea035a9c3c}
ffd8ffe000104a46494600010201012c012c0000ffed0b9e50686f746f73686f7020332e30003842494d03ed0a5265736f6c7574696f6e0000000010012c0000
00010001012c0000000100013842494d040d18465820476c6f62616c204c69676874696e6720416e676c650000000004000000783842494d041912465820476c
@ -409,7 +409,7 @@ d9f8a5f0f84278ccb667a6f2ef67e297c3e109e332d99e9bcbbd9f8a5f0f84278ccb667a6f2ef67e
67e297c3e109e332d99e9bcbbd9f8a5f0f84278ccb667a6f2ef67e297c3e109e332d99e9bcbbd9f8a5f0f84278ccb667a6f2ef67e297c3e109e332d99e9bcbbd
9f8a5f0f84278ccb667a6f2ef67e297c3e109e332d99e9bcbbd9f8a5f0f84278ccb667a6f2ef67e297c3e109e332d99e9bcbbd9f8a5f0f84278ccb667a6f2ef6
7e297c3e109e332d99e9bcbbd9f8a5f0f84278ccb667a6f2ef67e297c3e109e332d99e9bcbbd9f8a5f0f84278ccb667a6f2ef67e297c3e109e332d99e9bcbbdbffd9}}}{\sp{\sn pibName}{\sv CMakeBanner.jpg}}{\sp{\sn pibFlags}{\sv 2}}
{\sp{\sn fLine}{\sv 0}}{\sp{\sn posh}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}}{\shprslt\par\pard\ql \li0\ri0\widctlpar\pvpara\posxc\dxfrtext180\dfrmtxtx180\dfrmtxty0\nowrap\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
{\sp{\sn fLine}{\sv 0}}{\sp{\sn posh}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}{\shprslt\par\pard\ql \li0\ri0\widctlpar\pvpara\posxc\dxfrtext180\dfrmtxtx180\dfrmtxty0\nowrap\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
{\pict\picscalex242\picscaley242\piccropl0\piccropr0\piccropt0\piccropb0\picw5249\pich1270\picwgoal2976\pichgoal720\wmetafile8\bliptag703103714\blipupi300{\*\blipuid 29e882e207abc915b98d44ea035a9c3c}
0100090000033221020000000e21020000000400000003010800050000000b0200000000050000000c0296006c02050000000701040000000e210200430f2000
cc00000096006c020000000096006c0200000000280000006c020000960000000100180000000000d8410400232e0000232e00000000000000000000fdfafdf8
@ -4775,32 +4775,32 @@ ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
\par }\pard \s1\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin-720\lin0\itap0 {Introduction
\par }\pard\plain \ql \li1170\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin1170\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard \qj \li0\ri-720\nowidctlpar\faauto\rin-720\lin0\itap0 {The Cross-Platform Make facility (CMake) manages the build process\emdash in a portable manner\emdash
across Windows and Unix platforms (hopefully Mac as well in the near future). CMake can be used to compile source code, create libraries, and build exec
utables in arbitrary combinations. On Unix platforms, CMake produces makefiles that may be used with the standard make facility. In the Microsoft Visual C++ environment, CMake creates projects and workspaces that can be imported into MSVC.
across Windows and Unix platforms (hopefully Mac as well in the near future). CMake can be used to compile source code, create libraries, and build executables in arbitrary combinations. On Unix platforms, CMake produces makefiles that may be used with th
e standard make facility. In the Microsoft Visual C++ environment, CMake creates projects and workspaces that can be imported into MSVC.
\par
\par CMake is design
ed to support complex directory hierarchies and applications dependent on several libraries. For example, CMake supports projects consisting of multiple toolkits (i.e., libraries), where each toolkit might contain several directories, and the application
depends on the toolkits plus additional code. CMake can also handle situations where executables must be built in order to generate code that is then compiled and linked into a final application.
\par CMake is designed to support complex directory hierarchies and applications dependent on several libraries. For example
, CMake supports projects consisting of multiple toolkits (i.e., libraries), where each toolkit might contain several directories, and the application depends on the toolkits plus additional code. CMake can also handle situations where executables must be
built in order to generate code that is then compiled and linked into a final application.
\par
\par Using CMake is simple. The build process is controlled by creating a CMakeLists.txt file in each directory (including subdirectories) of a project. Each CMakeLists.txt file consists of one or more commands. Each command has the form COMMAND (args\'85
) where COMMAND is the name of the command, and args is a white-space
separated list of arguments. CMake provides many pre-defined commands, but if you need to, you can add your own commands. In addition, the advanced user can add other makefile generators for particular compiler/OS combinations.
) where COMMAND is the name of the command, and args is a white-space separated list of arguments. CMake provides many pre-defined commands, but if you need to, you can add
your own commands. In addition, the advanced user can add other makefile generators for particular compiler/OS combinations.
\par }\pard \ql \li1170\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin1170\itap0 {\fs28
\par }\pard\plain \s1\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin-720\lin0\itap0 \b\fs36\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Installing CMake
\par }\pard\plain \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {You can download and install precompiled binaries of CMake for Windows and UNIX from }{\field\flddirty{\*\fldinst { HYPERLINK "http://public.kitware.com/CMake" }{
{\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b02000000170000002000000068007400740070003a002f002f007000750062006c00690063002e006b006900740077006100720065002e0063006f006d002f0043004d0061006b0065000000e0c9ea79f9bace118c8200aa004ba90b4000000068007400740070003a002f002f00
7000750062006c00690063002e006b006900740077006100720065002e0063006f006d002f0043004d0061006b0065000000}}}{\fldrslt {\cs16\ul\cf2 http://public.kitware.com/CMake}}}{
7000750062006c00690063002e006b006900740077006100720065002e0063006f006d002f0043004d0061006b006500000000}}}{\fldrslt {\cs16\ul\cf2 http://public.kitware.com/CMake}}}{
. If you want to build CMake yourself, you can download the source code using CVS (available at }{\field\flddirty{\*\fldinst { HYPERLINK "http://cvshome.org" }{{\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b02000000170000001300000068007400740070003a002f002f0063007600730068006f006d0065002e006f00720067000000e0c9ea79f9bace118c8200aa004ba90b2800000068007400740070003a002f002f0063007600730068006f006d0065002e006f00720067002f000000}
}}{\fldrslt {\cs16\ul\cf2 http://cvshome.org}}}{) and typing:
\par }\pard\plain \s23\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs18\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b
cvs -d :pserver:anonymous@public.kitware.com:/insight/cmakecvsroot login}{\line (respond with password cmake)
00d0c9ea79f9bace118c8200aa004ba90b02000000170000001300000068007400740070003a002f002f0063007600730068006f006d0065002e006f00720067000000e0c9ea79f9bace118c8200aa004ba90b2800000068007400740070003a002f002f0063007600730068006f006d0065002e006f00720067002f000000
00}}}{\fldrslt {\cs16\ul\cf2 http://cvshome.org}}}{) and typing:
\par }\pard\plain \s23\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f28\fs18\cf1\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b cvs -d :pserver:anonymous@public.kitware.
com:/insight/cmakecvsroot login}{\line (respond with password cmake)
\par Follow this command by checking out the source code:\line }{\b cvs -d :pserver:anonymous@public.kitware.com:/insight/cmakecvsroot co CMake}{
\par }\pard\plain \s22\ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard\plain \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
Then you can build CMake on Windows by loading the CMake.Source/CMake.dsp file into Microsoft Visual Studio or on UNIX by running
\par }\pard\plain \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Then you can build CMake on Windows by loading the CMake.Source
/CMake.dsp file into Microsoft Visual Studio or on UNIX by running
\par }\pard \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par cd CMake
\par ./configure
@ -4813,13 +4813,14 @@ Then you can build CMake on Windows by loading the CMake.Source/CMake.dsp file i
\par }\pard \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par }\pard\plain \s3\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin-720\lin0\itap0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Running CMake for Windows / Microsoft Visual C++ (MSVC)
\par }\pard\plain \ql \li0\ri-720\widctlpar\tx0\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {Run CMakeSetup.exe which should be in your Start menu under Program Files, there may al
so be a shortcut on your desktop. A GUI will appear similar to what is shown below (but possibly different as CMake is still being developed). The top two entries are the source code and binary directories. They allow you to specify where the source code
is for what you want to compile and where the resulting binaries should be placed. You should set these two values first. If the binary directory you specify does not exist, it will be created for you.
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {Run CMakeSetup.exe which should be in your Start menu under Program Files, there may also be a shortcut on your desktop. A GUI will appear si
milar to what is shown below (but possibly different as CMake is still being developed). The top two entries are the source code and binary directories. They allow you to specify where the source code is for what you want to compile and where the resultin
g binaries should be placed. You should set these two values first. If the binary directory you specify does not exist, it will be created for you.
\par
\par
\par }{{\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex80\picscaley80\piccropl0\piccropr0\piccropt0\piccropb0
\picw20003\pich12779\picwgoal11340\pichgoal7245\pngblip\bliptag-1766431572{\*\blipuid 96b664ac09765ad5aafd2c06b84b8e08}89504e470d0a1a0a0000000d49484452000002f4000001e30802000000c3851cff000000017352474200aece1ce90000539d49444154785eed9dcbbf25c956d7
\par }{{\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}
\picscalex80\picscaley80\piccropl0\piccropr0\piccropt0\piccropb0\picw20003\pich12779\picwgoal11340\pichgoal7245\pngblip\bliptag-1766431572{\*\blipuid 96b664ac09765ad5aafd2c06b84b8e08}
89504e470d0a1a0a0000000d49484452000002f4000001e30802000000c3851cff000000017352474200aece1ce90000539d49444154785eed9dcbbf25c956d7
fb38e0d31f7935d03c441110eebd6835748b40b782d285933bbc833be11f70202db48ad028704ef1b240c4420a070e1dd7a0863591532268b522564b35722f97
a78820ef874ccb3827aae2ac13cf159191999199dffdd95dbd4fee88156b7d23f6cedf5e119971f2e4f1a31778400002108000042000815d1078ebed774e8cb8
b9f1eaebbb08872020000108400002103834815bb76e3d7cf8f099b879ffbd770f0d83e02100010840000210d83e817bf71f5c13375ff3d17f3747502727c6ea
@ -22275,11 +22276,11 @@ c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8
d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d4c8d0d440404005000000070101000000030000000000}}}{
\par }\pard \qj \li810\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin810\itap0 {
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par The cache values area is where you can specify d
ifferent options for the build process. The example shown below is for VTK which has a large number of options. Once you have specified the source code and binary directories you should click the Build Project Files button. This will cause CMake to read i
n
the CMakeLists.txt files from the source code directory and produce Microsoft Visual C++ workspaces. It will also cause the cache area to be updated to display any new options for the project. Adjust your cache settings if desired and click the Build pro
ject Files button again. Keep repeating this process until you are happy with the cache options (typically just once or twice).
\par The cache values area is where you can specify different options for th
e build process. The example shown below is for VTK which has a large number of options. Once you have specified the source code and binary directories you should click the Build Project Files button. This will cause CMake to read in the CMakeLists.txt fi
l
es from the source code directory and produce Microsoft Visual C++ workspaces. It will also cause the cache area to be updated to display any new options for the project. Adjust your cache settings if desired and click the Build project Files button again
. Keep repeating this process until you are happy with the cache options (typically just once or twice).
\par
\par CMakeSetup.exe generates a MSVC workspace file in the binary directory you specified. Typically this file has the same name as what you are compiling (e.g. VTK.dsp, ITK.dsw etc).
\par The next step in this process is to open the workspace with MSVC. Once open, the project can be built in the normal manner of Microsoft Visual C++. The ALL_BUILD target can be used to build all of the libraries and executables in the package.
@ -22288,14 +22289,14 @@ ject Files button again. Keep repeating this process until you are happy with th
\par }\pard\plain \s3\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin-720\lin0\itap0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Running CMake on Unix
\par }\pard\plain \s22\ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard \s22\qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
Using CMake to build a project on UNIX is a simple process. Change directory into where you want the binaries to be placed. This can be the same directory as the source code for what we call
in-place builds (the binaries are in the same place as the source code) or it can be a new directory you create. For an in-place build you then run cmake and it will produce a CMakeCache.txt file that contains build options that you can adjust using any t
e
xt editor. For non in-place builds the process is the same except you run cmake and provide the path to the source code as its argument. Once you have edited the CMakeCache.txt file you rerun cmake, repeat this process until you are happy with the cache s
ettings. The type make and your project should compile. Some projects will have install targets as well so you can type make install to install them.
Using CMake to build a project on UNIX is a simple process. Change directory into where you want the binaries to be placed. This can be the same directory as the source code for what we call in-place builds (the bi
naries are in the same place as the source code) or it can be a new directory you create. For an in-place build you then run cmake and it will produce a CMakeCache.txt file that contains build options that you can adjust using any text editor. For non in-
p
lace builds the process is the same except you run cmake and provide the path to the source code as its argument. Once you have edited the CMakeCache.txt file you rerun cmake, repeat this process until you are happy with the cache settings. The type make
and your project should compile. Some projects will have install targets as well so you can type make install to install them.
\par }\pard \s22\ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par }\pard \s22\qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {Two examples of CMake usage on the Unix platform follow for a hello world project called Hello. In the fir
st example, and in-place build is performed, i.e., the binaries are placed in the same directory as the source code.
\par }\pard \s22\qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {Two examples of CMake usage on the Unix platform follow for a hello world project called Hello. In the first example, and in-plac
e build is performed, i.e., the binaries are placed in the same directory as the source code.
\par }\pard \s22\ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par }\pard\plain \ql \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {cd Hello
\par }\pard \ql \fi720\li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {cmake
@ -22313,28 +22314,27 @@ braries, and executables are produced in a directory separate from the source co
\par }\pard \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par }\pard\plain \s3\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin-720\lin0\itap0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Why do I have to edit the cache more than once for some projects?
\par }\pard\plain \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par So
me projects are very complex and setting one value in the cache may cause new options to appear the next time the cache is built. For example, VTK supports the use of MPI for performing distributed computing. This requires the build process to determine w
here the MPI libraries and header files are and to let the user adjust their values. But MPI is only available if another option VTK_USE_PARALLEL is first turned on in VTK. So to avoid confusion for people who don\rquote
t know what MPI is, we hide those options u
ntil VTK_USE_PARALLEL is turned on. So CMake shows the VTK_USE_PARALLEL option in the cache area, if the user turns that on and rebuilds the cache, new options will appear for MPI that they can then set. The rule is to keep building the cache until it doe
sn\rquote t change. For most projects this will be just once. For some complicated ones it will be twice.
\par Some projects are very complex and setting one value in the cache may cause new options to appear the next time the cache is built. For example, VTK supports the use of MPI for performing distributed computing. This requires the buil
d process to determine where the MPI libraries and header files are and to let the user adjust their values. But MPI is only available if another option VTK_USE_PARALLEL is first turned on in VTK. So to avoid confusion for people who don\rquote
t know what MPI is
, we hide those options until VTK_USE_PARALLEL is turned on. So CMake shows the VTK_USE_PARALLEL option in the cache area, if the user turns that on and rebuilds the cache, new options will appear for MPI that they can then set. The rule is to keep buildi
ng the cache until it doesn\rquote t change. For most projects this will be just once. For some complicated ones it will be twice.
\par
\par }\pard\plain \s1\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin-720\lin0\itap0 \b\fs36\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Developer's Guide
\par }\pard\plain \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par This section describes how to use CMake from the software developer\rquote s point of view. That is, if your aim is to use CMake to manage your b
uild process, read this section first. An Extension Guide follows later in this document to explain the internals of CMake, and how to setup the CMake environment. Read that section only if you plan to install, extend, or enhance the features of CMake. Th
is section of the User\rquote s Guide begins with a description of the CMake inputs. Examples then follow to clarify these descriptions.
\par This section describes how to use CMake from the software developer\rquote s point of view. That is, if your aim is to u
se CMake to manage your build process, read this section first. An Extension Guide follows later in this document to explain the internals of CMake, and how to setup the CMake environment. Read that section only if you plan to install, extend, or enhance
the features of CMake. This section of the User\rquote s Guide begins with a description of the CMake inputs. Examples then follow to clarify these descriptions.
\par }\pard \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par }\pard\plain \s2\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin-720\lin0\itap0 \b\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Input to CMake
\par }\pard\plain \ql \li1170\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin1170\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {CMake\rquote s input is the text file CMakeLists.txt in your source directory. This input file specifies the things t
hat need to be built in the current directory. The CMakeLists.txt consists of one or more commands. Each command is of the form:
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {CMake\rquote
s input is the text file CMakeLists.txt in your source directory. This input file specifies the things that need to be built in the current directory. The CMakeLists.txt consists of one or more commands. Each command is of the form:
\par }\pard \ql \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
\par COMMAND(args\'85)
\par
\par }\pard \qj \li0\ri-720\nowidctlpar\faauto\rin-720\lin0\itap0 {Where COMMAND is the name of the command, and args is a white-space separated list of arguments to the comman
d. (Arguments with embedded white-space should be quoted.) Typically there will be a CMakeLists.txt file for each directory of the project. Let\rquote
\par }\pard \qj \li0\ri-720\nowidctlpar\faauto\rin-720\lin0\itap0 {Where
COMMAND is the name of the command, and args is a white-space separated list of arguments to the command. (Arguments with embedded white-space should be quoted.) Typically there will be a CMakeLists.txt file for each directory of the project. Let\rquote
s start with a simple example. Consider building hello world. You would have a source tree with the following files:
\par
\par Hello.c CMakeLists.txt
@ -22344,8 +22344,8 @@ s start with a simple example. Consider building hello world. You would have a s
\par PROJECT (Hello)
\par ADD_EXECUTABLE(Hello Hello.c)
\par
\par To build the Hello executable you just follow the process described in }{\b Running CMake}{ above to generate the makefiles or Microsof
t project files. The PROJECT command indicates what the name of the resulting workspace should be and the ADD_EXECUTABLE command adds an executable target to the build process. That\rquote
\par To build the Hello executable you just follow the process described in }{\b Running CMake}{
above to generate the makefiles or Microsoft project files. The PROJECT command indicates what the name of the resulting workspace should be and the ADD_EXECUTABLE command adds an executable target to the build process. That\rquote
s all there is to it for this simple example. If your project requires a few files it is also quite easy, just modify the ADD_EXECUTABLE line as shown below.
\par
\par ADD_EXECUTABLE(Hello Hello.c File2.c File3.c File4.c)
@ -22368,13 +22368,14 @@ s all there is to it for this simple example. If your project requires a few fil
\par TARGET_ADD_LIBRARY (Hello TCL_LIBRARY)
\par ENDIF (TCL_LIBRARY)
\par
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {In this example the SOURCE_FILES command is used to group together source files into a list. The IF
command is used to add either WinSupport.c or UnixSupport.c to this list. And finally the ADD_EXECUTABLE command is used to build the executable with the files listed in the source list HELLO_SRCS. The FIND_LIBRARY command looks for the Tcl library under
a few different names and in a few different paths, and if it is found adds it to the link line for the Hello executable target. Note the use of the # character to denote a comment line.
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
In this example the SOURCE_FILES command is used to group together source files into a list. The IF command is used to add either WinSupport.c or UnixSupport.c to this list. And finally the ADD_EXECUTABLE command is used to build the e
xecutable with the files listed in the source list HELLO_SRCS. The FIND_LIBRARY command looks for the Tcl library under a few different names and in a few different paths, and if it is found adds it to the link line for the Hello executable target. Note t
he use of the # character to denote a comment line.
\par }\pard \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {CMake always defines some variables for use within CMakeList files.
For example, WIN32 is always defined on windows systems and UNIX is always defined for UNIX systems. CMake defines a number of commands. A brief summary of the most commonly used commands follows here. Later in the document an exhaustive list of all pre-d
efined commands is presented. (You may also add your own commands, see the Extension Guide for more information.)
\par }\pard \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
CMake always defines some variables for use within CMakeList files. For example, WIN32 is always defined on windows systems and UNIX is always defined for UNIX systems. CMake defines a number of commands.
A brief summary of the most commonly used commands follows here. Later in the document an exhaustive list of all pre-defined commands is presented. (You may also add your own commands, see the Extension Guide for more information.)
\par }\pard \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par {\pntext\pard\plain\hich\af0\dbch\af0\loch\f0 A)\tab}}\pard \ql \fi-360\li720\ri-720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls9\pnrnot0\pnucltr\pnstart1\pnindent360\pnsp120\pnhang{\pntxta )}}
\aspalpha\aspnum\faauto\ls9\adjustright\rin-720\lin720\itap0 {Build Targets:
@ -22385,13 +22386,14 @@ efined commands is presented. (You may also add your own commands, see the Exten
\par AUX_SOURCE_DIRECTORY()
\par PROJECT()
\par }\pard \ql \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
\par }\pard \qj \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {CMake works recursively, descending
from the current directory into any subdirectories listed in the SUBDIRS command. The command SOURCE_FILES is used for grouping source files together for later use. (Note: currently only C and C++ code can be compiled.) ADD_LIBRARY adds a library to the
l
ist of targets this makefile will produce. ADD_EXECUTABLE adds an executable to the list of targets this makefile will produce. (Note: source code is compiled first, then libraries are built, and then executables are created.) The AUX_SOURCE_DIRECTORY is
a
directory where other source code, not in this directory, whose object code is to be inserted into the current LIBRARY. All source files in the AUX_SOURCE_DIRECTORY are compiled (e.g. *.c, *.cxx, *.cpp, etc.). PROJECT (PojectName) is a special variable
used in the MSVC to create the project for the compiler, it also defines two useful variables for CMAKE: ProjectName_SOURCE_DIR and ProjectName_BINARY_DIR.
\par }\pard \qj \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
CMake works recursively, descending from the current directory into any subdirectories listed in the SUBDIRS command. The command SOURCE_FILES is used for grouping sou
rce files together for later use. (Note: currently only C and C++ code can be compiled.) ADD_LIBRARY adds a library to the list of targets this makefile will produce. ADD_EXECUTABLE adds an executable to the list of targets this makefile will produce. (No
t
e: source code is compiled first, then libraries are built, and then executables are created.) The AUX_SOURCE_DIRECTORY is a directory where other source code, not in this directory, whose object code is to be inserted into the current LIBRARY. All sourc
e
files in the AUX_SOURCE_DIRECTORY are compiled (e.g. *.c, *.cxx, *.cpp, etc.). PROJECT (PojectName) is a special variable used in the MSVC to create the project for the compiler, it also defines two useful variables for CMAKE: ProjectName_SOURCE_DIR and
ProjectName_BINARY_DIR.
\par }\pard \ql \fi720\li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
\par {\pntext\pard\plain\hich\af0\dbch\af0\loch\f0 B)\tab}}\pard \ql \fi-360\li720\ri-720\widctlpar{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pnucltr\pnstart2\pnindent360\pnsp120\pnhang{\pntxta )}}\aspalpha\aspnum\faauto\ls6\adjustright\rin-720\lin720\itap0 {
Build flags and options. In addition to the commands listed above, CMakeLists.txt often contain the following commands:
@ -22402,20 +22404,21 @@ Build flags and options. In addition to the commands listed above, CMakeLists.t
\par TARGET_LINK_LIBRARIES()
\par }\pard \ql \li720\ri-720\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
\par }\pard \qj \li720\ri-720\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
These commands define directories and libraries used to compile source code and build executables. An important feature of the commands listed above i
s that are inherited by any subdirectories. That is, as CMake descends through a directory hierarchy (defined by SUBDIRS()) these commands are expanded each time a definition for a command is encountered. For example, if in the top-level CMakeLists file h
as INCLUDE_DIRECTORIES(/usr/include), with SUBDIRS(./subdir1), and the file ./subdir1/CMakeLists.txt has INCLUDE_DIRECTORIES(/tmp/foobar), then the net result is
These commands define directories and libraries used to compile source code and build executables. An important feature of the commands listed above is that are inherited by any subdirectories. That is, as CMake descends through a directory hierarchy (def
i
ned by SUBDIRS()) these commands are expanded each time a definition for a command is encountered. For example, if in the top-level CMakeLists file has INCLUDE_DIRECTORIES(/usr/include), with SUBDIRS(./subdir1), and the file ./subdir1/CMakeLists.txt has I
NCLUDE_DIRECTORIES(/tmp/foobar), then the net result is
\par }\pard \ql \li1170\ri-720\widctlpar{\*\pn \pnlvlcont\ilvl0\ls0\pnrnot0\pndec }\aspalpha\aspnum\faauto\adjustright\rin-720\lin1170\itap0 {
\par \tab INCLUDE_DIRECTORIES(/usr/include /tmp/foobar)
\par
\par {\pntext\pard\plain\hich\af0\dbch\af0\loch\f0 C)\tab}}\pard \qj \fi-360\li720\ri-720\widctlpar{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pnucltr\pnstart2\pnindent360\pnsp120\pnhang{\pntxta )}}\aspalpha\aspnum\faauto\ls6\adjustright\rin-720\lin720\itap0 {
CMake comes with a number of modules that look
for commonly used packages such as OpenGL or Java. These modules save you from having to write all the CMake code to find these packages yourself. Modules can be used by including them into your CMakeList file as shown below.
CMake comes with a number of modules that look for commonly used packages such as OpenGL or Java. These modules save you from having to write all th
e CMake code to find these packages yourself. Modules can be used by including them into your CMakeList file as shown below.
\par }\pard \ql \li1440\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin1440\itap0 {
\par INCLUDE ($\{CMAKE_ROOT\}/Modules/FindTCL.cmake)
\par
\par }\pard \qj \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
CMAKE_ROOT is always defined in CMake and can be used to point to where CMake was installed. Looking through some of the files in the Modules subdirectory can provide good ideas on how to use some of the CMake commands.
\par }\pard \qj \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {CMAKE_ROOT is always defined in CMake and can be used to point to where CMake was
installed. Looking through some of the files in the Modules subdirectory can provide good ideas on how to use some of the CMake commands.
\par }\pard\plain \s3\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin-720\lin0\itap0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par Adding A New Directory to a project
\par }\pard\plain \s22\ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {A common way to extend a project is to add a new directory. This involves three steps:
@ -22433,75 +22436,72 @@ Create a CMakeLists.txt in the new directory with the appropriate commands
\par }\pard\plain \s2\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin-720\lin0\itap0 \b\fs28\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {CMake Commands
\par }\pard\plain \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {The following is an exhaustive list of pre-defined CMake commands, with brief descriptions.
\par }\pard\plain \s24\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\dbch\af23
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ABSTRACT_FILES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - A list of abstract classes, useful for wr\hich\af2\dbch\af23\loch\f2 appers.
\par }\pard \s24\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ABSTRACT_FILES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - A list of abstract classes, useful for wrappers.
\par \hich\af2\dbch\af23\loch\f2 Usage: ABSTRACT_FILES(file1 file2 ..)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ADD_CUSTOM_TARGET}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add an extra target to the build system that does not produce output, so it is run each time the target is built.
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_CUSTOM_TARGET(Name "command to run" ALL)
\par \hich\af2\dbch\af23\loch\f2 The ALL option is optio\hich\af2\dbch\af23\loch\f2 nal. If it is specified it indicates that this target should be added to the Build all target.
\par }\pard \s24\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\dbch\af23 \hich\af2\dbch\af23\loch\f2 Usage: ADD_CU\hich\af2\dbch\af23\loch\f2 STOM_TARGET(Name \hich\af2\dbch\af23\loch\f2 [ALL] command arg arg arg ...)
\par }\pard \s24\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\dbch\af23 \hich\af2\dbch\af23\loch\f2 The ALL option is optional. If it is specified it indicates that this target should be added to the Build all target.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ADD_DEFINITIONS}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add -D define flags to command line for environments.
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_DEFINITIONS(-DFOO -DBAR ...)
\par \hich\af2\dbch\af23\loch\f2 Add -D define flags to command line for environm\hich\af2\dbch\af23\loch\f2 ents.
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_D\hich\af2\dbch\af23\loch\f2 EFINITIONS(-DFOO -DBAR ...)
\par \hich\af2\dbch\af23\loch\f2 Add -D define flags to command line for environments.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ADD_DEPENDENCIES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add an dependency to a target
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_DEPENDENCIES(target-name depend-target depend-target)
\par \hich\af2\dbch\af23\loch\f2 Add a dependency to a target. This is only used to ad\hich\af2\dbch\af23\loch\f2 d dependecies between one executable and another. Regular build dependencies are handled automatically.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ADD_EXECUTABLE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add an executable to the project that uses the specified srclists
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_EXECUTABLE(exename srclist srclist srclist ...)
\par \hich\af2\dbch\af23\loch\f2 ADD_EXECUTABLE(exename WIN32 srclist srclist srclist ...)This command adds an executable target to the curr\hich\af2\dbch\af23\loch\f2
ent directory. The executable will be built from the source files / source lists specified. The second argument to this command can be WIN32 which indicates that the executable (when compiled on windows) is a windows app (using WinMain)not a console app (
\hich\af2\dbch\af23\loch\f2 u\hich\af2\dbch\af23\loch\f2 sing main).
\par \hich\af2\dbch\af23\loch\f2 ADD_E\hich\af2\dbch\af23\loch\f2
XECUTABLE(exename WIN32 srclist srclist srclist ...)This command adds an executable target to the current directory. The executable will be built from the source files / source lists specified. The second argument to this command can be WIN32 which indica
\hich\af2\dbch\af23\loch\f2 t\hich\af2\dbch\af23\loch\f2 es that the executable (when compiled on windows) is a windows app (using WinMain)not a console app (using main).
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ADD_LIBRARY}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add an library to the project that uses the specified srclists
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_LIBRARY(libname srclist srclist srclist ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ADD_TEST}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add a test to the project with the specified arguments.
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_TEST(testname exename arg1 arg2\hich\af2\dbch\af23\loch\f2 arg3 ...)
\par \hich\af2\dbch\af23\loch\f2
This command adds a test target to the current directory. The tests are run by the testing subsystem by executing exename with the specified arguments. exename can be either an executable built by built by this project or an arbitrary executable
\hich\af2\dbch\af23\loch\f2 on the system (like tclsh).
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 AD\hich\af2\dbch\af23\loch\f2 D_TEST}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add a test to the project with the specified arguments.
\par \hich\af2\dbch\af23\loch\f2 Usage: ADD_TEST(testname exename arg1 arg2 arg3 ...)
\par \hich\af2\dbch\af23\loch\f2 This command adds a test target to the current directory. The tests are run by the testing subsystem by executing exename with the speci\hich\af2\dbch\af23\loch\f2
fied arguments. exename can be either an executable built by built by this project or an arbitrary executable on the system (like tclsh).
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 AUX_SOURCE_DIRECTORY}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add all the source files found in the specified
\par \hich\af2\dbch\af23\loch\f2 directory to the build as source list NAME.
\par \hich\af2\dbch\af23\loch\f2 Usage: AUX_SOURCE_DIRECTORY(dir srcListName)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 BUILD_COMMAND}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Determine the command line that will build this p\hich\af2\dbch\af23\loch\f2 roject.
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 BUILD_COMMAND}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Determine the command line that will build this project.
\par \hich\af2\dbch\af23\loch\f2 Usage: BUILD_COMMAND(NAME)
\par \hich\af2\dbch\af23\loch\f2 Within CMAKE set NAME to the command that will build this project from the command line.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 BUILD_NAME}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Set a CMAKE variable to the build type.
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 BUILD_NAME}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 -\hich\af2\dbch\af23\loch\f2 Set a CMAKE variable to the build type.
\par \hich\af2\dbch\af23\loch\f2 Usage: BUILD_NAME(NAME)
\par \hich\af2\dbch\af23\loch\f2 Within CMAKE sets NAME to the build type.
\par \hich\af2\dbch\af23\loch\f2 Within CMAK\hich\af2\dbch\af23\loch\f2 E sets NAME to the build type.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 BUILD_SHARE\hich\af2\dbch\af23\loch\f2 D_LIBRARIES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Build shared libraries instead of static
\par \hich\af2\dbch\af23\loch\f2 Usage: BUILD_SHARED_LIBRARIES()
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 CABLE_CLASS_SET}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Define a set of classes for use in other CABLE commands.
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 CABLE_CLASS_SET}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Define a set of classes \hich\af2\dbch\af23\loch\f2 for use in other CABLE commands.
\par \hich\af2\dbch\af23\loch\f2 Usage: CABLE_CLASS_SET(set_name class1 class2 ...)
\par \hich\af2\dbch\af23\loch\f2 Defines a set with the given name containi\hich\af2\dbch\af23\loch\f2 ng classes and their
\par \hich\af2\dbch\af23\loch\f2 Defines a set with the given name containing classes and their
\par \hich\af2\dbch\af23\loch\f2 associated header files. The set can later be used by other CABLE
\par \hich\af2\dbch\af23\loch\f2 commands.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 CABLE_WRAP_TCL}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Wrap a set of classes in Tcl.
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 CABLE_WRAP_TCL}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Wrap a s\hich\af2\dbch\af23\loch\f2 et of classes in Tcl.
\par \hich\af2\dbch\af23\loch\f2 Usage: CABLE_WRAP_TCL(target class1 class2 ...)
\par \hich\af2\dbch\af23\loch\f2 Wrap the given set of classes in Tcl using the CABLE tool. Th\hich\af2\dbch\af23\loch\f2 e set
\par \hich\af2\dbch\af23\loch\f2 Wrap the given set of classes in Tcl using the CABLE tool. The set
\par \hich\af2\dbch\af23\loch\f2 of source files produced for the given package name will be added to
\par \hich\af2\dbch\af23\loch\f2 a source list with the given name.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 CONFIGURE_FILE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create a file from an autoconf style file.in file.
\par \hich\af2\dbch\af23\loch\f2 Usage: CONFIGURE_FILE(InputFile OutputFile [COPYONLY])
\par \hich\af2\dbch\af23\loch\f2 The Input and Ouput fi\hich\af2\dbch\af23\loch\f2 les have to have full paths.
\par \hich\af2\dbch\af23\loch\f2 They can also use variables like CMAKE_BINARY_DIR,CMAKE_SOURCE_DIR.
\par \hich\af2\dbch\af23\loch\f2 This command replaces any variables in the input file with their
\par \hich\af2\dbch\af23\loch\f2 values as determined by CMake. If a variables in not defined, it
\par \hich\af2\dbch\af23\loch\f2 will be replaced with nothing\hich\af2\dbch\af23\loch\f2 . If COPYONLY is passed in, then
\par \hich\af2\dbch\af23\loch\f2 then no varible expansion will take place.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 CONFIGU\hich\af2\dbch\af23\loch\f2 RE_FILE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create a file from an autoconf style file.in file.
\par \hich\af2\dbch\af23\loch\f2 Usage: CONFIGURE_FILE(InputFile OutputFile [COPYONLY] [ESCAPE_QUOTES])
\par \hich\af2\dbch\af23\loch\f2 The Input and Ouput files have to have full paths.
\par \hich\af2\dbch\af23\loch\f2 They can also use variables like CMAKE_BINARY_DIR,CMAKE_SOURCE_DIR. Th\hich\af2\dbch\af23\loch\f2
is command replaces any variables in the input file with their values as determined by CMake. If a variables in not defined, it will be replaced with nothing. If COPYONLY is passed in, then then no varible expansion will take place. If ESCAPE_QUOTES is p
\hich\af2\dbch\af23\loch\f2 a\hich\af2\dbch\af23\loch\f2 ssed in then any substitued quotes will be C style escaped.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ELSE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - starts the else portion of an if block
\par \hich\af2\dbch\af23\loch\f2 Usage: ELSE(define)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ENABLE_TESTING}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Enable testing for this directory and below.
\par \hich\af2\dbch\af23\loch\f2 Usage: ENABLE_TESTING()
\par \hich\af2\dbch\af23\loch\f2 Enables testing for this\hich\af2\dbch\af23\loch\f2 directory and below. See also the ADD_TEST command.
\par \hich\af2\dbch\af23\loch\f2 Enables testing for this directory \hich\af2\dbch\af23\loch\f2 and below. See also the ADD_TEST command.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 ENDIF}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - ends an if block
\par \hich\af2\dbch\af23\loch\f2 Usage: ENDIF(define)
@ -22510,124 +22510,146 @@ This command adds a test target to the current directory. The tests are run by t
\par \hich\af2\dbch\af23\loch\f2 Usage: EXEC_PROGRAM(Executble )
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 FIND_FILE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Find a file.
\par \hich\af2\dbch\af23\loch\f2 Usage:\hich\af2\dbch\af23\loch\f2 FIND_FILE(NAME file extrapath extrapath ...)
\par \hich\af2\dbch\af23\loch\f2 Usage: F\hich\af2\dbch\af23\loch\f2 IND_FILE(NAME file extrapath extrapath ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 FIND_LIBRARY}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Find a library.
\par \hich\af2\dbch\af23\loch\f2 Usage: FIND_LIBRARY(DEFINE_PATH libraryName [NAMES] name1 name2 name3 [PATHS path1 path2 path3...])
\par \hich\af2\dbch\af23\loch\f2 If the library is found, then DEFINE_PATH is set to the full path where it was\hich\af2\dbch\af23\loch\f2 found
\par \hich\af2\dbch\af23\loch\f2 If the library is found, then DEFINE_PATH is set to the full path where it w\hich\af2\dbch\af23\loch\f2 as found
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 FIND_PATH}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Find a path for a file.
\par \hich\af2\dbch\af23\loch\f2 Usage: FIND_PATH(PATH_DEFINE fileName path1 path2 path3...)
\par \hich\af2\dbch\af23\loch\f2 If the file is found, then PATH_DEFINE is set to the path where it was found
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 FIND_PROGRAM}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Find an executable program.
\par \hich\af2\dbch\af23\loch\f2 Usage: FIND_PROGRAM(NAME execut\hich\af2\dbch\af23\loch\f2 able1 extrapath extrapath ...)
\par \hich\af2\dbch\af23\loch\f2 Usage: FIND_PROGRAM(NA\hich\af2\dbch\af23\loch\f2 ME executable1 extrapath extrapath ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 GET_FILENAME_COMPONENT}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Get a specific component of a full filename.
\par \hich\af2\dbch\af23\loch\f2 Usage: GET_FILENAME_COMPONENT(VarName FileName PATH|NAME|EXT|NAME_WE)
\par \hich\af2\dbch\af23\loch\f2 Set VarName to be the path (PATH), file name (NAME), file extension (EXT) or file na\hich\af2\dbch\af23\loch\f2 me without extension (NAME_WE) of FileName.
\par \hich\af2\dbch\af23\loch\f2 Set VarName to be the path (PATH), file name (NAME), file extension (EX\hich\af2\dbch\af23\loch\f2 T) or file name without extension (NAME_WE) of FileName.
\par \hich\af2\dbch\af23\loch\f2 Note that the path is converted to Unix slashes format and has no trailing slashes. The longest file extension is always considered.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 IF}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - start an if block
\par \hich\af2\dbch\af23\loch\f2 Usage: IF (define) Starts an if block. Optionally there\hich\af2\dbch\af23\loch\f2 it can be invoked as IF (NOT Define) the matching ELSE and ENDIF require the NOT as well.
\par \hich\af2\dbch\af23\loch\f2 Usage: IF (define) Starts an if block.\hich\af2\dbch\af23\loch\f2 Optionally there it can be invoked as
\par \hich\af2\dbch\af23\loch\f2 IF (NOT Define) the matching ELSE and ENDIF require the NOT as well.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 INCLUDE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Basically identical to a C #include "somthing" command.
\par \hich\af2\dbch\af23\loch\f2 Usage: INCLUDE(file1 file2)
\par \hich\af2\dbch\af23\loch\f2 Usage: INCLUDE(file1 [OPTIONAL])
\par \hich\af2\dbch\af23\loch\f2 If OPTIONAL is present, then do not complai\hich\af2\dbch\af23\loch\f2 n if the file does not exist.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 INCLUDE_DIRECTORIES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add include directories to the build.
\par \hich\af2\dbch\af23\loch\f2 Usage: IN\hich\af2\dbch\af23\loch\f2 CLUDE_DIRECTORIES(dir1 dir2 ...)
\par \hich\af2\dbch\af23\loch\f2 Usage: INCLUDE_DIRECTORIES(dir1 dir2 ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 INCLUDE_REGULAR_EXPRESSION}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Set the regular expression used for dependency checking.
\par \hich\af2\dbch\af23\loch\f2 Usage: INCLUDE_REGULAR_EXPRESSION(regex)
\par \hich\af2\dbch\af23\loch\f2 Sets the regular expression used in dependency checking. Only
\par \hich\af2\dbch\af23\loch\f2 include files matching this regu\hich\af2\dbch\af23\loch\f2 lar expression will be traced.
\par \hich\af2\dbch\af23\loch\f2 Usage: INCLUDE_REGULAR_EXPRESS\hich\af2\dbch\af23\loch\f2 ION(regex_match [regex_complain])
\par \hich\af2\dbch\af23\loch\f2 Set the regular expressions used in dependency checking. Only files
\par \hich\af2\dbch\af23\loch\f2 matching regex_match will be traced as dependencies. Only files
\par \hich\af2\dbch\af23\loch\f2 matching regex_complain will generate warnings if they cannot be found
\par \hich\af2\dbch\af23\loch\f2 (standard hea\hich\af2\dbch\af23\loch\f2 der paths are not searched). The defaults are:
\par \hich\af2\dbch\af23\loch\f2 regex_match = "^.*$" (match everything)
\par \hich\af2\dbch\af23\loch\f2 regex_complain = "^$" (match empty string only)
\par
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 INSTALL_FILES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create install rules for files
\par \hich\af2\dbch\af23\loch\f2 Usage: INSTALL_FILES(path extension srclist file file srclist ...)
\par \hich\af2\dbch\af23\loch\f2 Create rules to install the listed files into the path. Path is relative to the variable PREFIX. The files can\hich\af2\dbch\af23\loch\f2
be specified explicitly or by referenceing source lists. All files must either have the extension specified or exist with the extension appended. A typical extension is .h etc...
\par \hich\af2\dbch\af23\loch\f2 Usage: INSTALL_FILES(path extension srclist file file \hich\af2\dbch\af23\loch\f2 srclist ...)
\par \hich\af2\dbch\af23\loch\f2 INSTALL_FILES(path regexp)
\par \hich\af2\dbch\af23\loch\f2 Create rules to install the listed files into the path. Path is relative to the variable CMAKE_INSTALL_PREFIX. There are two forms for this command. In the first the files can be specified explicitly or by referenc
\hich\af2\dbch\af23\loch\f2
eing source lists. All files must either have the extension specified or exist with the extension appended. A typical extension is .h etc... In the second form any files in the current directory that match the regular expression will be installed.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 INSTALL_TARGETS}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create install rules for targets
\par \hich\af2\dbch\af23\loch\f2 Usage: INSTALL_TARGETS(p\hich\af2\dbch\af23\loch\f2 ath target target)
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 INSTA\hich\af2\dbch\af23\loch\f2 LL_TARGETS}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create install rules for targets
\par \hich\af2\dbch\af23\loch\f2 Usage: INSTALL_TARGETS(path target target)
\par \hich\af2\dbch\af23\loch\f2 Create rules to install the listed targets into the path. Path is relative to the variable PREFIX
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 LINK_DIRECTORIES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Specify link directories.
\par \hich\af2\dbch\af23\loch\f2 Usage: LINK_DIRECTORIES(directory1 directory2 ...)
\par \hich\af2\dbch\af23\loch\f2 Specify the paths to the libraries that wi\hich\af2\dbch\af23\loch\f2 ll be linked in. The directories can use built in definitions like CMAKE_BINARY_DIR and CMAKE_SOURCE_DIR.
\par \hich\af2\dbch\af23\loch\f2 Usage: LINK_DIRECT\hich\af2\dbch\af23\loch\f2 ORIES(directory1 directory2 ...)
\par \hich\af2\dbch\af23\loch\f2 Specify the paths to the libraries that will be linked in.
\par \hich\af2\dbch\af23\loch\f2 The directories can use built in definitions like
\par \hich\af2\dbch\af23\loch\f2 CMAKE_BINARY_DIR and CMAKE_SOURCE_DIR.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 LINK_LIBRARIES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Specify a list of libraries to be linked into
\par \hich\af2\dbch\af23\loch\f2 executables or shared objects.
\par \hich\af2\dbch\af23\loch\f2 Usage: LINK_LIBRARIES(library1 <debug | optimized> libr\hich\af2\dbch\af23\loch\f2 ary2 ...)
\par \hich\af2\dbch\af23\loch\f2
Specify a list of libraries to be linked into executables or shared objects. This command is passed down to all other commands. The debug and optimized strings may be used to indicate that the next library listed is to be used only for that spec
\hich\af2\dbch\af23\loch\f2 ific type of build
\par \hich\af2\dbch\af23\loch\f2 exec\hich\af2\dbch\af23\loch\f2 utables or shared objects.
\par \hich\af2\dbch\af23\loch\f2 Usage: LINK_LIBRARIES(library1 <debug | optimized> library2 ...)
\par \hich\af2\dbch\af23\loch\f2 Specify a list \hich\af2\dbch\af23\loch\f2 of libraries to be linked into \hich\af2\dbch\af23\loch\f2 executables or shared ob\hich\af2\dbch\af23\loch\f2 jects. This command is passed down to all other commands.
\hich\af2\dbch\af23\loch\f2 The debug and optimized strin\hich\af2\dbch\af23\loch\f2 g\hich\af2\dbch\af23\loch\f2 s may be used to indicate that \hich\af2\dbch\af23\loch\f2 the next library listed is to \hich\af2\dbch\af23\loch\f2
be used only for that specific \hich\af2\dbch\af23\loch\f2 type of build
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 LOAD_CACHE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - load in the values from another cache.
\par \hich\af2\dbch\af23\loch\f2 Usage: LOAD_CACHE(pathToCacheFile)
\par \hich\af2\dbch\af23\loch\f2 Load in the values from another cache. This is useful for a project that depends on another project built in a different tree.
\par \hich\af2\dbch\af23\loch\f2 Load in the values from another cache. This is useful f\hich\af2\dbch\af23\loch\f2 or a project that depends on another project built in a different tree.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 MAKE_DIRECTORY}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Crea\hich\af2\dbch\af23\loch\f2 te a directory in the build tree if it does not exist. Parent directories will be created if the do not exist..
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 MAKE_DIRECTORY}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create a directory in the build tree if it does not exist.
\par \hich\af2\dbch\af23\loch\f2 Parent directories will be created if the do not exist..
\par \hich\af2\dbch\af23\loch\f2 Usage: MAKE_DIRECTORY(directory)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 MESSAGE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Display a message to the user.
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 MESSAGE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - \hich\af2\dbch\af23\loch\f2 Display a message to the user.
\par \hich\af2\dbch\af23\loch\f2 Usage: MESSAGE("the message to display" "Title for dialog")
\par \hich\af2\dbch\af23\loch\f2 The first\hich\af2\dbch\af23\loch\f2 argument is the message to display. The second argument is optional and is the title for the dialog box on windows.
\par \hich\af2\dbch\af23\loch\f2 The first argument is the message to display. The second argument is optional and is the title for the dialog box on windows.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 OPTION}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Provides an option that the user can optionally select
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 OPTION}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Provides an option that t\hich\af2\dbch\af23\loch\f2 he user can optionally select
\par \hich\af2\dbch\af23\loch\f2 Usage: OPTION(USE_MPI "help string decribing the option" [initial value])
\par \hich\af2\dbch\af23\loch\f2 Provide an option for the user to select
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 OUTPUT_REQUIRED_FILES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Output a list of required source files for a specified source file.
\par \hich\af2\dbch\af23\loch\f2 Usage: OUTPUT\hich\af2\dbch\af23\loch\f2 _REQUIRED_FILES(srcfile outputfile)
\par \hich\af2\dbch\af23\loch\f2 Outputs a list of all the source files that are required by the specified srcfile. This list is written into outputfile. This is similar to writing out the dependencies for srcfile except that it jumps from .h files int
\hich\af2\dbch\af23\loch\f2 o .cxx, .c and .cpp files if possible.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 PROJECT}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Set a name for the entire project. One argument.
\par \hich\af2\dbch\af23\loch\f2 Usage: PROJECT(projectname) Sets the name of the Microsoft workspace .dsw file.
\par \hich\af2\dbch\af23\loch\f2 Usage: PROJECT(projectname) Sets the name of the Microsoft workspace .dsw file. \hich\af2\dbch\af23\loch\f2 Does nothing on UNIX currently
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 SET}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Set a CMAKE variable to a value
\par \hich\af2\dbch\af23\loch\f2 Usage: SET(VAR [VALUE] [CACHE TYPE D\hich\af2\dbch\af23\loch\f2 OCSTRING])
\par \hich\af2\dbch\af23\loch\f2
Within CMAKE sets VAR to the value VALUE. VALUE is expanded before VAR is set to it. If CACHE is present, then the VAR is put in the cache. TYPE and DOCSTRING are required. If TYPE is INTERNAL, then the VALUE is Always written into the cache,
\hich\af2\dbch\af23\loch\f2 replacing any values existing in the cache. If it is not a CACHE VAR, then this always writes into the current makefile.
\par \hich\af2\dbch\af23\loch\f2 Usage: SET(VAR [VALUE] [CACHE TYPE DOCSTRING])
\par \hich\af2\dbch\af23\loch\f2 Within CMAKE sets VAR to the value VALUE. VALUE is expanded before VAR is set to it. If CACHE is present, then the VAR is put in the cache. TYPE and DOCSTRING are required. If TYPE is INTERNAL, then the VA
\hich\af2\dbch\af23\loch\f2 LUE is Always written into the cache, replacing any values existing in the cache. If it is not a CACHE VAR, then this always writes into the current makefile.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 SITE_NAME}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Set a CMAKE variable to the name of this computer.
\par \hich\af2\dbch\af23\loch\f2 Usage: SITE_NAME(NAME)
\par \hich\af2\dbch\af23\loch\f2 Within CMAKE sets NAME to the host name of the \hich\af2\dbch\af23\loch\f2 computer.
\par \hich\af2\dbch\af23\loch\f2 Withi\hich\af2\dbch\af23\loch\f2 n CMAKE sets NAME to the host name of the computer.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 SOURCE_FILES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add a list of source files, associate them with a NAME.
\par \hich\af2\dbch\af23\loch\f2 Usage: SOURCE_FILES(NAME file1 file2 ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 SOURCE_FILES_REMOVE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Remove a list of source files - associated with NAME.
\par \hich\af2\dbch\af23\loch\f2 Usage: \hich\af2\dbch\af23\loch\f2 SOURCE_FILES_REMOVE(NAME file1 file2 ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 SOURCE_GROUP}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Define a grouping for sources in the makefile.
\par \hich\af2\dbch\af23\loch\f2 Usage: SOURCE_GROUP(name regex)
\par \hich\af2\dbch\af23\loch\f2 Defines a new source group. Any file\hich\af2\dbch\af23\loch\f2 whose name matches the regular
\par \hich\af2\dbch\af23\loch\f2 expression will be placed in this group. The LAST regular expression
\par \hich\af2\dbch\af23\loch\f2 Defines a new source group. Any file whose name matches the regular
\par \hich\af2\dbch\af23\loch\f2 expression will be placed in this group. The\hich\af2\dbch\af23\loch\f2 LAST regular expression
\par \hich\af2\dbch\af23\loch\f2 of all defined SOURCE_GROUPs that matches the file will be selected.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 SUBDIRS}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Add a list of subdirectories to the build.
\par \hich\af2\dbch\af23\loch\f2 Usage: SUBDIRS(dir1 dir2 ...)
\par \hich\af2\dbch\af23\loch\f2 A\hich\af2\dbch\af23\loch\f2 dd a list of subdirectories to the build. This will cause any CMakeLists.txt files in the sub directories to be processed by CMake.
\par \hich\af2\dbch\af23\loch\f2 Add a list o\hich\af2\dbch\af23\loch\f2 f subdirectories to the build. \hich\af2\dbch\af23\loch\f2 This will cause any CMakeList\hich\af2\dbch\af23\loch\f2 s.tx\hich\af2\dbch\af23\loch\f2 t files in the sub directories
\hich\af2\dbch\af23\loch\f2 to be processed by CMake.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 TARGET_LINK_LIBRARIES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Specify a list of libraries to be linked into
\par \hich\af2\dbch\af23\loch\f2 executables or shared objects.
\par \hich\af2\dbch\af23\loch\f2 Usage: TARGET_LINK_LIB\hich\af2\dbch\af23\loch\f2 RARIES(target library1 <debug | optimized> library2 ...)
\par \hich\af2\dbch\af23\loch\f2 Specify a list of libraries to be linked into the specified target
\par \hich\af2\dbch\af23\loch\f2 The debug and optimized strings may be used to indicate that the next library listed is to be used only for that specific type of bu\hich\af2\dbch\af23\loch\f2 ild
\par \hich\af2\dbch\af23\loch\f2 Usage: TARGET_LINK_LIBRARIES(target library1 <debug | optimized> library2 ...)
\par \hich\af2\dbch\af23\loch\f2 Specify \hich\af2\dbch\af23\loch\f2 a list of libraries to be linked into the specified target
\par \hich\af2\dbch\af23\loch\f2 The debug and optimized strings may be used to indicate that
\par \hich\af2\dbch\af23\loch\f2 the next library listed is to be used only for that specific
\par \hich\af2\dbch\af23\loch\f2 type of build
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 UTILITY_SOURCE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Specify the source tree of a third-party utility.
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 UTILITY_SOURCE}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Specify the source tree of a third-par\hich\af2\dbch\af23\loch\f2 ty utility.
\par \hich\af2\dbch\af23\loch\f2 Usage: UTILITY_SOURCE(cache_entry executable_name path_to_source [file1 file2 ...])
\par \hich\af2\dbch\af23\loch\f2 When a third-party utility's source is included in the distribution,
\par \hich\af2\dbch\af23\loch\f2 this command specifies its loca\hich\af2\dbch\af23\loch\f2 tion and name. The cache entry will
\par \hich\af2\dbch\af23\loch\f2 not be set unless the path_to_source and all listed files exist. It
\par \hich\af2\dbch\af23\loch\f2 this command specifies its location and name. The cache entry will
\par \hich\af2\dbch\af23\loch\f2 not be set unless t\hich\af2\dbch\af23\loch\f2 he path_to_source and all listed files exist. It
\par \hich\af2\dbch\af23\loch\f2 is assumed that the source tree of the utility will have been built
\par \hich\af2\dbch\af23\loch\f2 before it is needed.
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 VTK_WRAP_JAVA}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create Java Wrappers.
\par \hich\af2\dbch\af23\loch\f2 Usage: VTK_WRAP_JAVA(r\hich\af2\dbch\af23\loch\f2 esultingLibraryName SourceListName SourceLists ...)
\par \hich\af2\dbch\af23\loch\f2 Usage: VTK_WRAP_JAVA(resultingLibraryName SourceListName SourceLists ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 VTK_WRAP_PYTHON}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create Python Wrappers.
\par \hich\af2\dbch\af23\loch\f2 Usage: VTK_WRAP_PYTHON(resultingLibraryName SourceListName SourceLists ...)
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 VTK_WRAP_TCL}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - Create Tcl Wrappers for VTK classes.
\par \hich\af2\dbch\af23\loch\f2 Usage: VTK_WRAP_TCL(resultingLib\hich\af2\dbch\af23\loch\f2 raryName [SOURCES] SourceListName SourceLists ... [COMMANDS CommandName1 CommandName2 ...])
\par \hich\af2\dbch\af23\loch\f2 Usage: VTK_WRAP_TCL(resultingLibraryName [SOURCES] SourceListName SourceLists\hich\af2\dbch\af23\loch\f2 ... [COMMANDS CommandName1 CommandName2 ...])
\par
\par }{\b\dbch\af23 \hich\af2\dbch\af23\loch\f2 WRAP_EXCLUDE_FILES}{\dbch\af23 \hich\af2\dbch\af23\loch\f2 - A list of classes, to exclude from wrapping.
\par \hich\af2\dbch\af23\loch\f2 Usage: WRAP_EXCLUDE_FILES(file1 file2 ..)}{
\par \hich\af2\dbch\af23\loch\f2 Usage: WRAP_EXCLUDE_FILES(file1 file2 ..)
\par }\pard\plain \ql \li1440\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin1440\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\b\fs28
\par }\pard\plain \s1\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin-720\lin0\itap0 \b\fs36\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Extending CMake Guide
\par }\pard\plain \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
@ -22635,22 +22657,21 @@ Within CMAKE sets VAR to the value VALUE. VALUE is expanded before VAR is set to
}{ section.
\par }\pard \ql \li720\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin720\itap0 {
\par }\pard\plain \s3\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin-720\lin0\itap0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Adding a New Rule
\par }\pard\plain \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Rules ca
n be added to CMake by deriving new commands from the class cmCommand (defined in CMake/Source/cmCommand.h/.cxx). Typically each rule is implemented in a class called cmRuleNameCommand stored in cmRuleNameCommand.h and cmRuleNameCommand.cxx. If you want t
o create a rule the best bet is to take a look at some of the existing rules in CMake. They tend to be fairly short.
\par }\pard\plain \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
Rules can be added to CMake by deriving new commands from the class cmCommand (defined in CMake/Source/cmCommand.h/.cxx). Typically each rule is implemented in a class called cmRuleNameCommand stored in cmRuleNameCommand.h and cmRule
NameCommand.cxx. If you want to create a rule the best bet is to take a look at some of the existing rules in CMake. They tend to be fairly short.
\par
\par }\pard\plain \s3\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin-720\lin0\itap0 \b\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Adding a New Makefile Generator
\par }\pard\plain \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
Different types of makefiles (corresponding to a different compiler and/or operating system) can be added b
y subclassing from cmMakefileGenerator (defined in cmMakefileGenerator.h/.cxx). Makefile generators process the information defined by the commands in CMakeLists.txt to generate the appropriate makefile(s). Again, the best bet is to work from one of the e
xisting generators.
\par }\pard\plain \qj \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Different types of makefiles (corresponding to a different compiler and/or o
perating system) can be added by subclassing from cmMakefileGenerator (defined in cmMakefileGenerator.h/.cxx). Makefile generators process the information defined by the commands in CMakeLists.txt to generate the appropriate makefile(s). Again, the best b
et is to work from one of the existing generators.
\par }\pard \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 {
\par }\pard\plain \s1\ql \li0\ri-720\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin-720\lin0\itap0 \b\fs36\ul\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Further Information
\par }\pard\plain \ql \li0\ri-720\widctlpar\aspalpha\aspnum\faauto\adjustright\rin-720\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Much of the development of CMake was performed at Kitware }{\field{\*\fldinst {
HYPERLINK "http://www.kitware.com/" }{{\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b3000000068007400740070003a002f002f007700770077002e006b006900740077006100720065002e0063006f006d002f000000}}}{\fldrslt {
HYPERLINK "http://www.kitware.com/" }{{\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b3000000068007400740070003a002f002f007700770077002e006b006900740077006100720065002e0063006f006d002f00000000}}}{\fldrslt {
\cs16\ul\cf2 http://www.kitware.com/}}}{. The developers can be reached at }{\field{\*\fldinst { HYPERLINK "mailto:kitware@kitware.com" }{{\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b360000006d00610069006c0074006f003a006b0069007400770061007200650040006b006900740077006100720065002e0063006f006d000000}}}{\fldrslt {\cs16\ul\cf2 mailto:kitware@kitware.com}}}{
. CMake was initially developed for the NIH/NLM Insight Segmentation and Registration Toolkit, see the Web site at }{\field{\*\fldinst {HYPERLINK "http://public.kitware.com/Insight.html"}{{\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4e00000068007400740070003a002f002f007000750062006c00690063002e006b006900740077006100720065002e0063006f006d002f0049006e00730069006700680074002e00680074006d006c000000}}
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b360000006d00610069006c0074006f003a006b0069007400770061007200650040006b006900740077006100720065002e0063006f006d00000000}}}{\fldrslt {\cs16\ul\cf2 mailto:kitware@kitware.com}
}}{. CMake was initially developed for the NIH/NLM Insight Segmentation and Registration Toolkit, see the Web site at }{\field{\*\fldinst {HYPERLINK "http://public.kitware.com/Insight.html"}{{\*\datafield
00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4e00000068007400740070003a002f002f007000750062006c00690063002e006b006900740077006100720065002e0063006f006d002f0049006e00730069006700680074002e00680074006d006c00000000}}
}{\fldrslt {\cs16\ul\cf2 http://public.kitware.com/Insight.html}}}{.
\par }}