Difference between revisions of "CMake"
m |
|||
(54 intermediate revisions by 15 users not shown) | |||
Line 1: | Line 1: | ||
CMake is a system for generating per-platform build files. Visit [http://cmake.org cmake.org] for general information about CMake. | |||
Linden Lab switched to CMake for building the Second Life viewer (starting with version 1.21); we are currently using version 2.8.10.2 | |||
= | = Introduction to CMake = | ||
CMake has the advantage of generating per-platform build files for us. On Linux, it will generate Makefiles and KDevelop project files. On OS X, it will generate Makefiles and Xcode project files. On Windows, it will generate Makefiles (for nmake) and Visual Studio project files. | |||
CMake has the advantage of generating per-platform build files for us. On Linux, it will generate Makefiles and KDevelop project files. On OS X, it will generate Makefiles and | |||
All of the "smarts" stay in the CMake files, so there's just one authoritative source of build knowledge. This means that people can use the development environment they prefer without having to worry so much about breaking other people's builds. Because CMake files are plain text, merging is easy, as is maintaining experimental patches. | All of the "smarts" stay in the CMake files, so there's just one authoritative source of build knowledge. This means that people can use the development environment they prefer without having to worry so much about breaking other people's builds. Because CMake files are plain text, merging is easy, as is maintaining experimental patches. | ||
CMake tells your build system how to rebuild its input files when it detects changes to CMake's configuration files. This means that you only need to run <code>cmake</code> once. After that, <code>make</code> or your IDE should keep the CMake files and its own project files in sync for you. | CMake tells your build system how to rebuild its input files when it detects changes to CMake's configuration files. This means that you only need to run <code>cmake</code> once. After that, <code>make</code> or your IDE should keep the CMake files and its own project files in sync for you. | ||
= Performing a build with CMake = | = Performing a build with CMake = | ||
Our builds are now managed one layer further out then CMake, using [[Autobuild]]; starting there is recommended. | |||
Per platform build instructions for CMake-based builds of the Second Life viewer are available for these platforms: | |||
* [[Microsoft Windows Builds|Microsoft Windows]] | |||
* [[Compiling the viewer (Mac OS X)|Mac OS X]] | |||
* [[Compiling the viewer (Linux)|Linux]] | |||
= Modifying CMake Files = | |||
== What to modify == | |||
'''TODO'' - discuss structure of CMake files | |||
= Patching guidelines = | = Patching guidelines = | ||
Line 66: | Line 32: | ||
If you're sending patches in, please follow a few simple guidelines: | If you're sending patches in, please follow a few simple guidelines: | ||
* Follow the existing coding style in the CMake files. I don't like code shouting at me, so prefer lowercase letters. | * Follow the existing coding style in the CMake files. I don't like code shouting at me, so prefer lowercase letters. | ||
* One logical change per patch. | * One logical change per patch. | ||
* Use spaces for indentation, not tabs. | * Use spaces for indentation, not tabs. | ||
See [[Submitting patches]] for more details. | |||
[[Category:Open Source Portal]] | |||
[[Category:Compiling viewer]] |
Latest revision as of 09:35, 13 February 2013
CMake is a system for generating per-platform build files. Visit cmake.org for general information about CMake.
Linden Lab switched to CMake for building the Second Life viewer (starting with version 1.21); we are currently using version 2.8.10.2
Introduction to CMake
CMake has the advantage of generating per-platform build files for us. On Linux, it will generate Makefiles and KDevelop project files. On OS X, it will generate Makefiles and Xcode project files. On Windows, it will generate Makefiles (for nmake) and Visual Studio project files.
All of the "smarts" stay in the CMake files, so there's just one authoritative source of build knowledge. This means that people can use the development environment they prefer without having to worry so much about breaking other people's builds. Because CMake files are plain text, merging is easy, as is maintaining experimental patches.
CMake tells your build system how to rebuild its input files when it detects changes to CMake's configuration files. This means that you only need to run cmake
once. After that, make
or your IDE should keep the CMake files and its own project files in sync for you.
Performing a build with CMake
Our builds are now managed one layer further out then CMake, using Autobuild; starting there is recommended.
Per platform build instructions for CMake-based builds of the Second Life viewer are available for these platforms:
Modifying CMake Files
What to modify
'TODO - discuss structure of CMake files
Patching guidelines
We welcome your patches! We can't test on every permutation of platform, compiler, IDE, and libraries, so if you have problems that you can fix, please contribute your fixes and we'll do our best to ensure that you only have to fix problems once.
If you're sending patches in, please follow a few simple guidelines:
- Follow the existing coding style in the CMake files. I don't like code shouting at me, so prefer lowercase letters.
- One logical change per patch.
- Use spaces for indentation, not tabs.
See Submitting patches for more details.