OLD | NEW |
1 # GYP vs. CMake # | 1 # vs. CMake |
2 | 2 |
3 GYP was originally created to generate native IDE project files (Visual Studio,
Xcode) for building [Chromium](http://www.chromim.org). | 3 GYP was originally created to generate native IDE project files (Visual Studio,
Xcode) for building [Chromium](http://www.chromim.org). |
4 | 4 |
5 The functionality of GYP is very similar to the [CMake](http://www.cmake.org) | 5 The functionality of GYP is very similar to the [CMake](http://www.cmake.org) |
6 build tool. Bradley Nelson wrote up the following description of why the team | 6 build tool. Bradley Nelson wrote up the following description of why the team |
7 created GYP instead of using CMake. The text below is copied from | 7 created GYP instead of using CMake. The text below is copied from |
8 http://www.mail-archive.com/webkit-dev@lists.webkit.org/msg11029.html | 8 http://www.mail-archive.com/webkit-dev@lists.webkit.org/msg11029.html |
9 | 9 |
10 ``` | 10 ``` |
11 | 11 |
(...skipping 10 matching lines...) Expand all Loading... |
22 I did an exploratory port of portions of Chromium to cmake (I think I got as | 22 I did an exploratory port of portions of Chromium to cmake (I think I got as |
23 far as net, base, sandbox, and part of webkit). | 23 far as net, base, sandbox, and part of webkit). |
24 There were a number of motivations, not all of which would apply to other | 24 There were a number of motivations, not all of which would apply to other |
25 projects. Also, some of the design of gyp was informed by experience at | 25 projects. Also, some of the design of gyp was informed by experience at |
26 Google with large projects built wholly from source, leading to features | 26 Google with large projects built wholly from source, leading to features |
27 absent from cmake, but not strictly required for Chromium. | 27 absent from cmake, but not strictly required for Chromium. |
28 | 28 |
29 1. Ability to incrementally transition on Windows. It took us about 6 months | 29 1. Ability to incrementally transition on Windows. It took us about 6 months |
30 to switch fully to gyp. Previous attempts to move to scons had taken a long | 30 to switch fully to gyp. Previous attempts to move to scons had taken a long |
31 time and failed, due to the requirement to transition while in flight. For a | 31 time and failed, due to the requirement to transition while in flight. For a |
32 substantial period of time, we had a hybrid of checked in vcproj and | 32 substantial period of time, we had a hybrid of checked in vcproj and gyp generat
ed |
33 gyp generated | 33 vcproj. To this day we still have a good number of GUIDs pinned in the gyp files
, |
34 vcproj. To this day we still have a good number of GUIDs pinned in the | |
35 gyp files, | |
36 because different parts of our release pipeline have leftover assumptions | 34 because different parts of our release pipeline have leftover assumptions |
37 regarding manipulating the raw sln/vcprojs. This transition occurred from | 35 regarding manipulating the raw sln/vcprojs. This transition occurred from |
38 the bottom up, largely because modules like base were easier to convert, and | 36 the bottom up, largely because modules like base were easier to convert, and |
39 had a lower churn rate. During early stages of the transition, the majority | 37 had a lower churn rate. During early stages of the transition, the majority |
40 of the team wasn't even aware they were using gyp, as it integrated into | 38 of the team wasn't even aware they were using gyp, as it integrated into |
41 their existing workflow, and only affected modules that had been converted. | 39 their existing workflow, and only affected modules that had been converted. |
42 | 40 |
43 2. Generation of a more 'normal' vcproj file. Gyp attempts, particularly on | 41 2. Generation of a more 'normal' vcproj file. Gyp attempts, particularly on |
44 Windows, to generate vcprojs which resemble hand generated projects. It | 42 Windows, to generate vcprojs which resemble hand generated projects. It |
45 doesn't generate any Makefile type projects, but instead produces msvs | 43 doesn't generate any Makefile type projects, but instead produces msvs |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 in sometimes weird and counter-intuitive ways). In fairness though, gyp assumes | 107 in sometimes weird and counter-intuitive ways). In fairness though, gyp assumes |
110 that external python scripts can be used as an escape hatch. Also gyp avoids | 108 that external python scripts can be used as an escape hatch. Also gyp avoids |
111 a lot of the things you'd need imperative code for, by having a nice target | 109 a lot of the things you'd need imperative code for, by having a nice target |
112 settings publication mechanism. | 110 settings publication mechanism. |
113 | 111 |
114 5. (Feature/drawback depending on personal preference). Gyp's syntax is | 112 5. (Feature/drawback depending on personal preference). Gyp's syntax is |
115 DEEPLY nested. It suffers from all of Lisp's advantages and drawbacks. | 113 DEEPLY nested. It suffers from all of Lisp's advantages and drawbacks. |
116 | 114 |
117 -BradN | 115 -BradN |
118 ``` | 116 ``` |
OLD | NEW |