summaryrefslogtreecommitdiffstats
path: root/Web/HTML/Examples.html
diff options
context:
space:
mode:
Diffstat (limited to 'Web/HTML/Examples.html')
-rw-r--r--Web/HTML/Examples.html51
1 files changed, 50 insertions, 1 deletions
diff --git a/Web/HTML/Examples.html b/Web/HTML/Examples.html
index 9ba12dc..2c2a897 100644
--- a/Web/HTML/Examples.html
+++ b/Web/HTML/Examples.html
@@ -15,8 +15,57 @@ vlink="#000000" alink="#000000">
<td width="550" valign="top" bgcolor="#FFFFFF">
<div align="left">
<font size=5>The following example </font> demonstrates some key ideas
- of CMake.
+ of CMake. (You may wish to download this
+ <a href="/CMake/HTML/cmakeExample.tar.gz">example code</a> and try it
+ out for yourself.)
+ <p>
+ There are three directories involved. The top level directory has two
+ subdirectories called ./Demo and ./Hello. In the directory ./Hello, a
+ library is built. In the directory ./Demo, an executable is built by
+ linking to the library. A total of three CMakeList.txt files are
+ created: one for each directory.
+ <p>
+ The first, top-level directory contains the following CMakeLists.txt file.
+ <pre>
+# The name of our project is "HELLO". CMakeLists files in this project can
+# refer to the root source directory of the project as ${HELLO_SOURCE_DIR} and
+# to the root binary directory of the project as ${HELLO_BINARY_DIR}.
+PROJECT(HELLO)
+# Recurse into the "Hello" and "Demo" subdirectories. This does not actually
+# cause another cmake executable to run. The same process will walk through
+# the project's entire directory structure.
+SUBDIRS(Hello Demo)
+ </pre>
+ Then for each subdirectory listed in the SUBDIRS command, CMakeLists.txt
+ files are created. In the ./Hello directory, the following CMakeLists.txt
+ file is created:
+ <pre>
+# Create a library called "Hello" which includes the source file "hello.cxx".
+# The extension is already found. Any number of sources could be listed here.
+ADD_LIBRARY(Hello hello)
+ </pre>
+ Finally, in the ./Demo directory, the third and final CMakeLists.txt file
+ is created:
+ <pre>
+# Make sure the compiler can find include files from our Hello library.
+INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/Hello)
+
+# Make sure the linker can find the Hello library once it is built.
+LINK_DIRECTORIES(${HELLO_BINARY_DIR}/Hello)
+
+# Add executable called "helloDemo" that is built from the source files
+# "demo.cxx" and "demo_b.cxx". The extensions are automatically found.
+ADD_EXECUTABLE(helloDemo demo demo_b)
+
+# Link the executable to the Hello library.
+TARGET_LINK_LIBRARIES(helloDemo Hello)
+ </pre>
+ CMake when executed in the top-level directory will process the
+ CMakeLists.txt file and then descend into the listed subdirectories.
+ Variables, include paths, library paths, etc. are inherited. Depending
+ on the system, makefiles (Unix) or workspaces/projects (MSVC) will be
+ built. These can then be used in the usual way to build the code.
</div>
</td>
</tr>