CMake: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
m (→‎autoconf: added note to use CVS when looking at this code)
(Replace content with link to new CMake community wiki)
 
(203 intermediate revisions by 86 users not shown)
Line 1: Line 1:
http://www.cmake.org/Art/CMakeBanner.jpg
{{CMake/Template/Moved}}


<!-- documentation manual man information help tutorial -->
This page has moved [https://gitlab.kitware.com/cmake/community/wikis/Home here].
Welcome to CMake, the cross-platform, open-source make system. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice. CMake is quite sophisticated: it is possible to support complex environments requiring system configuration, pre-processor generation, code generation, and template instantiation.
 
You will find here not only documentation for CMake, but also for CPack and CTest.
 
==CMake ==
 
=== Primary Resources - Look here first! ===
* Where can I [http://www.cmake.org/HTML/Download.html download CMake]?
* [http://www.cmake.org/HTML/Documentation.html CMake Documentation]
* [[CMake Useful Variables|Useful CMake Variables]]
* [[CMake FAQ| FAQ (Frequently asked questions)]]
* [http://www.cmake.org/mailman/listinfo/cmake CMake Mailing List]
 
=== Development Topics===
* [[CMake Cross Compiling| Cross compiling]]
* [[CMake RPATH handling|RPATH handling]]
* [[CMake Editors Support|Editors/IDEs with CMake syntax support]]
* [[CMake Generator Specific Information|Docs for Specific Project Generators]] (Eclipse, KDevelop3, CodeBlocks, Makefile)
* [[CMake User Contributed Macros| Contributed macros]]
* [[CMake:Module Maintainers|Module Maintainers]]
* [[CMake:VariablesListsStrings| On variables, lists, strings, maps, regexps, etc.]]
* [[CMake Platform Dependent Issues|Platform Dependent Information]]
* [[CMake Released Versions|Documentation for previous releases]]
 
===Tutorials===
 
====Basic Introductions====
* [http://www.cmake.org/HTML/Examples.html A Simple CMake Example]
* [http://www.linuxjournal.com/article/6700 Cross-Platform Software Development Using CMake]
* [http://clubjuggler.livejournal.com/138364.html CMake: The Cross Platform Build System]
* [http://kernigh.pbwiki.com/CMake Introduction to the CMake language]
 
====Specific Topics====
* [[CMake HowToDoPlatformChecks| How to write platform checks with CMake]]<br>Describes how to implement platform or configure checks with CMake.
 
* [[CMake HowToFindInstalledSoftware| How to find installed software with CMake]]<br>Describes how to search for and then use software packages  with CMake.
 
* [[CMake:HowToUseExistingOSXFrameworks | How to find and use existing frameworks on OS X]]<br> A quick example to help OS X users find frameworks automatically.
 
* [[CMake:How To Build KDE4 Software | How to build KDE4 software with CMake]]
 
* [http://qtnode.net/wiki?title=Qt_with_cmake Qt with CMake] <br>Explains how to use CMake to build software with Qt4, Qt3 and KDE3.
 
* [http://www.wxwidgets.org/wiki/index.php/CMake How to use CMake for building software with wxWidgets ]
 
* [http://www.linuxdevices.com/articles/AT6762290643.html Building eCos applications with CMake]
 
===Converters from other buildsystems to CMake===
 
All converters listed here are not "complete", i.e. the generated CMake files are not 100% finished, in all cases some work is left for the developer.
 
====automake/autotools/autoconf====
* [http://websvn.kde.org/trunk/KDE/kdesdk/cmake/scripts/ am2cmake (requires Ruby) ] Converts automake/autotools/libtool based projects to CMake, specialized in converting from KDE 3 to KDE 4, should also work for others. This one has been used for converting the KDE buildsystem to CMake.
 
* [http://emanuelgreisen.dk/stuff/kdevelop_am2cmake.php.tgz Alternative Automake2CMake (requires PHP)] Converts KDevelop projects that use automake to CMake.
 
=====autoconf=====
When converting from autoconf, the generation of "config.h" files can be complex. You may wish to examine the CMake scripts within the gcc-xml project at [http://www.gccxml.org/HTML/Index.html gcc-xml (XML output of gcc's internal representation)]. The project builds a modified gcc compiler using CMake. This is an impressive feat of autoconf conversion.
 
For example, the HAVE_THIS/HAVE_THAT defines used within autoconf projects can be overwhelming when converting a large project.  Below is a snippet from the "config.h.in" file within gcc-xml:
 
<tt>
: /* Define to 1 if you have the `bcopy' function. */
: #cmakedefine HAVE_BCOPY @HAVE_BCOPY@
 
: /* Define to 1 if you have the `bsearch' function. */
: #cmakedefine HAVE_BSEARCH @HAVE_BSEARCH@
 
: /* Define to 1 if you have the `bzero' function. */
: #cmakedefine HAVE_BZERO @HAVE_BZERO@
</tt>
 
While not a drop-in tool, their scripts are an excellent starting point. ''Be sure to reference the code from their CVS repository instead of the out-of-date tarball listed.''
 
====qmake====
* [[CMake:ConvertFromQmake | qmake converter (requires Ruby)]] Converts projects that use Qt's qmake.
 
====KDE====
* [http://websvn.kde.org/trunk/KDE/kdesdk/cmake/scripts/ gencmake (requires Ruby) ] Creates basic CMakeLists.txt files from looking at the existing files.
 
====Visual Studio====
* [http://www.eskilson.se/vcproj2cmake.rb vcproj2cmake.rb (requires Ruby)] Creates CMakeLists.txt files by extracting info from Visual Studio project files.
 
===Success Stories===
 
* What are some [[CMake Projects|projects using CMake]]?
* [[CMake:Articles|Articles about CMake]]
* [[Really Cool CMake Features]]
 
===More Topics===
 
* [[CMake Fortran Issues|Fortran Issues]]
* [[CMake:For CMake Hackers|For CMake Hackers]]
* [[CMake:Experiments With Lua|Experiments With Lua]]
* [[CMake Performance Tips|Performance Tips]]
* [[CMake:Install Commands| Replacing deprecated INSTALL_FILES, INSTALL_PROGRAMS and INSTALL_TARGETS commands]]
* [[CMake:GNU style example | GNU style directory layout with CMake]]
* [[CMake:OpenTasks| CMake TODO]]
 
==CTest==
 
===Tutorials===
* [[CMake Testing With CTest|Testing With CTest]]<br>Introduces to testing with CTest, submitting dashboards, and using CMake to add tests to the test system.
 
* [[CMake Scripting Of CTest|CTest Scripting]]<br>Describes the scripting with CTest which can significantly simplify and automate testing and submitting dashboards.
 
* [[CMake Generating Testing Files|Generating Input Files For CTest]]<br>Describe more in details the concepts behind testing with CTest and also explans how to use CTest without using CMake.
 
===More Information===
* [[CTest:Submission Issues|Configuring CTest Submission Methods]]
* [[CTest:Nightly, Experimental, Continuous|CTest Nightly, Experimental, Continuous, ...]]
* [[CTest:Coverage]]
* [[Media:CTest Running Modes.pdf]]
* [[CTest:FAQ|CTest Frequently asked questions]]
 
 
==CPack==
===Tutorials===
* [[CMake:Packaging With CPack|Packaging with CPack]]<br>Introduction to CPack, installing and packaging of software.
* [[CMake:CPackConfiguration|CPack Variables]]<br>
* [[CMake:CPackPackageGenerators|Supported package formats]]<br>
===More Information===
* [[CPack:Generator Information|CPack Generator Information]]
 
==CDash==
* [[CDash|CDash Wiki]].
* [[CDash:FAQ|CDash FAQ]].
 
{{CMake/Template/Footer}}

Latest revision as of 15:40, 30 April 2018


The CMake community Wiki has moved to the Kitware GitLab Instance.

This page has moved here.