+1 cho "Nhiều người và họ thật kinh khủng."
Nhưng, "giàu nhất" và "có khả năng mở rộng nhất" có lẽ là CMake , đây là trình tạo Makefile (cũng tạo ra MSVC ++ *.proj
/ *.sln
) bản địa . Cú pháp kỳ lạ, nhưng một khi bạn học nó, nó có thể cho phép bạn tạo các bản dựng độc đáo cho các nền tảng khác nhau. Nếu tôi "bắt đầu làm mới", có lẽ tôi sẽ sử dụng CMake
. Nó sẽ xử lý danh sách của bạn, mặc dù "thế hệ mã" của bạn có thể đảm nhận "một cuộc sống của chính nó" ngoài hệ thống xây dựng tùy thuộc vào những gì bạn muốn làm. (Xem bên dưới.)
Đối với các dự án đơn giản, trình tạo QMake vẫn ổn (bạn không cần sử dụng các thư viện Qt để sử dụng QMake). Nhưng, bạn không mô tả "đơn giản" - tạo mã và "giai đoạn thêm" có nghĩa là bạn có thể muốn CMake
hoặc một cái gì đó có API phong phú cho các tiện ích mở rộng của riêng bạn, như Scons
(hoặc Waf
).
Chúng tôi sử dụng Scons tại nơi làm việc. Nó tạo ra "đạn chống đạn", nhưng nó rất chậm. Không có hệ thống nào khác sẽ chống đạn như Scons
. Nhưng, nó chậm. Nó được viết bằng Python và chúng tôi đã mở rộng giao diện cho "tổ chức không gian làm việc" của chúng tôi (nơi chúng tôi chỉ xác định các phụ thuộc mô-đun) và đó là một phần của Scons
ý định thiết kế (loại tiện ích mở rộng này thông qua Python). Thuận tiện, nhưng xây dựng là chậm. Bạn có các bản dựng chống đạn (bất kỳ hộp nhà phát triển nào cũng có thể tạo bản phát hành cuối cùng), nhưng nó chậm. Và, nó chậm. Đừng quên rằng nếu bạn sử dụng Scons
, tuy nhiên, nó chậm. Và, nó chậm.
Tôi cảm thấy khó chịu khi nghĩ rằng một thập kỷ sau năm 2000, chúng ta vẫn không có ô tô bay. Có lẽ chúng ta sẽ phải đợi một trăm năm nữa hoặc một cái gì đó để có được chúng. Và, sau đó tất cả chúng ta có thể sẽ bay xung quanh trong những chiếc ô tô bay của chúng ta vẫn đang được chế tạo với hệ thống xây dựng tào lao.
Vâng, tất cả họ đều khủng khiếp.
[GIỚI THIỆU VỀ MÃ SỐ]
Scons
hoạt động trên "các pha" và chúng "hơi tĩnh". Nó có thể xây dựng mã được tạo như một phần của bản dựng (mọi người đang thực hiện việc này theo một số cách khác nhau), nhưng điều này đã được mô tả là "một cái gì đó rất không giống Scons".
Nếu đơn giản là "tiền xử lý một số tệp và tạo tệp nguồn", thì không có vấn đề gì (bạn có rất nhiều tùy chọn và đây là lý do qmake
được viết - cho quá trình moc
tiền xử lý*.hpp/*.cpp
tệp).
Tuy nhiên, nếu bạn đang thực hiện việc này theo cách "nặng nề", bạn sẽ cần phải tự viết kịch bản. Ví dụ, chúng tôi đã có các tập lệnh xây dựng một phần để truy vấn cơ sở dữ liệu và tạo các lớp C ++ để giao tiếp giữa các "lớp" (trong phát triển ứng dụng 3 tầng truyền thống). Tương tự, chúng tôi đã tạo mã nguồn máy chủ / máy khách thông qua IDL và thông tin phiên bản nhúng để cho phép nhiều máy khách / máy chủ chạy đồng thời với các phiên bản khác nhau (cho cùng một "máy khách" hoặc "máy chủ"). Rất nhiều mã nguồn được tạo ra. Chúng ta có thể "giả vờ" đó là "hệ thống xây dựng", nhưng thực sự, đó là một cơ sở hạ tầng không tầm thường cho "quản lý cấu hình", trong đó một phần của nó là "hệ thống xây dựng". Ví dụ, hệ thống này phải "gỡ xuống" và "