108 lines
3.8 KiB
Markdown
108 lines
3.8 KiB
Markdown
Ryan's CMake Modules
|
|
====================
|
|
|
|
Ryan A. Pavlik, Ph.D.
|
|
|
|
<ryan.pavlik@gmail.com> <abiryan@ryand.net>
|
|
<http://academic.cleardefinition.com>
|
|
|
|
Introduction
|
|
------------
|
|
|
|
This is a collection of CMake modules that I've produced during the course
|
|
of a variety of software development. There are a number of find modules,
|
|
especially for virtual reality and physical simulation packages, some utility
|
|
modules of more general interest, and some patches or workarounds for
|
|
CMake itself.
|
|
|
|
Each module is generally documented, and depending on how busy I was
|
|
when I created it, the documentation can be fairly complete.
|
|
|
|
By now, it also includes contributions both from open-source projects I work on,
|
|
as well as friendly strangers on the Internet contributing their modules. I am
|
|
very grateful for improvements/fixes/pull requests!
|
|
|
|
How to Integrate
|
|
----------------
|
|
|
|
These modules are probably best placed wholesale into a `cmake` subdirectory
|
|
of your project source.
|
|
|
|
If you use Git, try installing [git-subtree][1] (included by default on
|
|
Git for Windows and perhaps for your Linux distro, especially post-1.9.1), so
|
|
you can easily use this repository for subtree merges, updating simply.
|
|
|
|
For the initial checkout:
|
|
|
|
cd projectdir
|
|
|
|
git subtree add --squash --prefix=cmake https://github.com/rpavlik/cmake-modules.git master
|
|
|
|
For updates:
|
|
|
|
cd projectdir
|
|
|
|
git subtree pull --squash --prefix=cmake https://github.com/rpavlik/cmake-modules.git master
|
|
|
|
If you originally installed this by just copying the files, you'll sadly have
|
|
to delete the directory, commit that, then do the `git subtree add`. Annoying,
|
|
but I don't know a workaround.
|
|
|
|
If you use some other version control, you can export a copy of this directory
|
|
without the git metadata by calling:
|
|
|
|
./export-to-directory.sh yourprojectdir/cmake
|
|
|
|
You might also consider exporting to a temp directory and merging changes, since
|
|
this will not overwrite by default. You can pass -f to overwrite existing files.
|
|
|
|
How to Use
|
|
----------
|
|
|
|
At the minimum, all you have to do is add a line like this near the top
|
|
of your root CMakeLists.txt file (but not before your `project()` call):
|
|
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
|
|
|
You might also want the extra automatic features/fixes included with the
|
|
modules, for that, just add another line following the first one:
|
|
|
|
include(UseBackportedModules)
|
|
|
|
Look at `module-help.html`/`.txt` (generated by `update-help.sh` on a unix-like shell with a pre-3.0 version of CMake.)
|
|
either in this directory or online at <http://github.com/rpavlik/cmake-modules/blob/master/module-help.txt>
|
|
for more information on individual modules. Since it requires an older CMake for generation,
|
|
the docs might get out of date, sorry - but you can always look at the files themselves.
|
|
|
|
|
|
Licenses
|
|
--------
|
|
|
|
The modules that I wrote myself are all subject to this license:
|
|
|
|
> Copyright Iowa State University 2009-2014,
|
|
> or Copyright Sensics, Inc. 2014-2015,
|
|
> or Copyright Ryan A. Pavlik 2009-2015
|
|
>
|
|
> Distributed under the Boost Software License, Version 1.0.
|
|
>
|
|
> (See accompanying file `LICENSE_1_0.txt` or copy at
|
|
> <http://www.boost.org/LICENSE_1_0.txt>)
|
|
|
|
Modules based on those included with CMake are under the OSI-approved
|
|
BSD license, which is included in each of those modules. A few other modules
|
|
are modified from other sources - when in doubt, look at the `.cmake`.
|
|
|
|
If you'd like to contribute, that would be great! Just make sure to include
|
|
the license boilerplate in your module, and send a pull request.
|
|
|
|
Important License Note!
|
|
-----------------------
|
|
|
|
If you find this file inside of another project, rather at the top-level
|
|
directory, you're in a separate project that is making use of these modules.
|
|
That separate project can (and probably does) have its own license specifics.
|
|
|
|
|
|
[1]: http://github.com/apenwarr/git-subtree "Git Subtree master"
|