2001-06-06 16:49:39 +04:00
|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
|
|
|
|
|
|
<html>
|
|
|
|
|
|
|
|
<!--#include virtual="/CMake/HTML/Head.html"-->
|
|
|
|
|
|
|
|
<body bgcolor="#FFFFFF" leftmargin=0 topmargin=0 text="black" link="#FFFFFF"
|
|
|
|
vlink="#000000" alink="#000000">
|
|
|
|
|
|
|
|
<!--#include virtual="/CMake/HTML/Table.html"-->
|
|
|
|
|
|
|
|
<tr>
|
|
|
|
<!--#include virtual="/CMake/HTML/SideBar.html"-->
|
|
|
|
|
|
|
|
<td width="550" valign="top" bgcolor="#FFFFFF">
|
|
|
|
<div align="left">
|
|
|
|
<font size=5>The following example </font> demonstrates some key ideas
|
2001-06-06 18:13:49 +04:00
|
|
|
of CMake. (You may wish to download this
|
|
|
|
<a href="/CMake/HTML/cmakeExample.tar.gz">example code</a> and try it
|
2001-06-06 18:29:11 +04:00
|
|
|
out for yourself.) Make sure that you have CMake installed prior to
|
|
|
|
running this example (go <a href="/CMake/HTML/Install.html">here</a>
|
|
|
|
for instructions).
|
2001-06-06 18:13:49 +04:00
|
|
|
<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)
|
2001-06-06 16:49:39 +04:00
|
|
|
|
2001-06-06 18:13:49 +04:00
|
|
|
# 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.
|
2001-06-06 16:49:39 +04:00
|
|
|
</div>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|