Tôi đã sử dụng make và makefiles trong nhiều năm, và mặc dù khái niệm là đúng đắn, nhưng việc triển khai có một cái gì đó được mong muốn.
Có ai tìm thấy bất kỳ giải pháp thay thế tốt nào để làm cho vấn đề không phức tạp hơn không?
Tôi đã sử dụng make và makefiles trong nhiều năm, và mặc dù khái niệm là đúng đắn, nhưng việc triển khai có một cái gì đó được mong muốn.
Có ai tìm thấy bất kỳ giải pháp thay thế tốt nào để làm cho vấn đề không phức tạp hơn không?
scons
, luigi
(thích nghi với shouldsee/luck
), snakemake
, waf
. Có nhiều lựa chọn thay thế Java nhưng không gian này quá nhỏ để viết tất cả chúng ra.
Câu trả lời:
kiểm tra SCons . Ví dụ: Doom 3 và Blender sử dụng nó.
Tôi có rất nhiều người bạn thề rằng CMake sẽ phát triển đa nền tảng:
Đó là hệ thống xây dựng được sử dụng cho VTK (trong số những thứ khác), là một thư viện C ++ với các liên kết Python, Tcl và Java đa nền tảng. Tôi nghĩ rằng đó có lẽ là thứ ít phức tạp nhất mà bạn sẽ tìm thấy với nhiều khả năng như vậy.
Bạn luôn có thể thử các công cụ tự động tiêu chuẩn . Các tệp Automake khá dễ ghép lại với nhau nếu bạn chỉ chạy trên Unix và nếu bạn sử dụng C / C ++. Việc tích hợp phức tạp hơn và công cụ tự động không phải là hệ thống đơn giản nhất từ trước đến nay.
doit là một công cụ python. Nó dựa trên các khái niệm về công cụ xây dựng nhưng chung chung hơn.
Một số dự án GNOME đã được chuyển sang waf .
Nó dựa trên Python, giống như Scons, nhưng cũng độc lập - vì vậy thay vì yêu cầu các nhà phát triển khác cài đặt công cụ xây dựng yêu thích của bạn, bạn chỉ cần sao chép tập lệnh xây dựng độc lập vào dự án của mình.
Hãy lưu ý về ninja
công cụ xây dựng (v1.8.2 tháng 9 năm 2017) chịu ảnh hưởng của tup
và redo
.
Trình tạo tệp xây dựng cmake
(ví dụ: cho Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) cũng có thể tạo ninja
tệp xây dựng kể từ phiên bản 2.8.8 (tháng 4 năm 2012) và afaik, ninja
giờ đây thậm chí còn là công cụ xây dựng mặc định được sử dụng bởi cmake
.
Nó được cho là hoạt động tốt hơn make
công cụ (theo dõi phụ thuộc tốt hơn và cũng được song song hóa).
cmake
là một công cụ đã được thiết lập tốt. Bạn luôn có thể chọn công cụ xây dựng sau đó mà không cần sửa đổi các tệp cấu hình của mình. Vì vậy, nếu một bản dựng tốt hơn được phát triển trong tương lai sẽ được hỗ trợ bởi cmake
bạn có thể chuyển sang bản đó một cách thuận tiện.
Lưu ý rằng đối với c / c ++, việc cải thiện thời gian biên dịch đôi khi bị giới hạn do tiêu đề được đưa vào qua bộ tiền xử lý (đặc biệt khi sử dụng lib chỉ dành cho tiêu đề, ví dụ: boost & eigen ), hy vọng sẽ được thay thế bằng đề xuất mô-đun (trong một bài đánh giá kỹ thuật của c ++ 11 hoặc cuối cùng trong c ++ 1y). Kiểm tra bản trình bày này để biết chi tiết về vấn đề này.
tup
phụ thuộc vào fuse
và có chạy phần mở rộng hạt nhân cầu chì, mà theo như tôi liên quan cho thấy những người bảo trì là những người sai lầm. redo
đã không được cập nhật trong hai năm. Tôi muốn giới thiệu ninja
.
Tôi đã viết một công cụ tên là sake để cố gắng viết những thứ giống như makefile trở nên rất dễ đọc và dễ viết.
make
cú pháp.
Nó phụ thuộc vào những gì bạn đang cố gắng làm. Nếu tất cả những gì bạn muốn là phụ thuộc đích theo kiểu make-style và lệnh gọi, thì Make thực sự là một trong những công cụ tốt hơn cho tác vụ. :-) Rake rất hay, nhưng có thể hơi vụng về đối với một số trường hợp đơn giản. Ant tất nhiên là thành phố rộng lớn, nhưng nó có hỗ trợ tốt hơn cho việc xây dựng các ngôn ngữ giống Java (bao gồm Scala và Groovy). Ngoài ra, Ant có sẵn ở khắp mọi nơi . Đó là lý do chính tôi sử dụng nó. Bởi vì nó hoạt động nhất quán trên Windows, nó thực sự còn đa nền tảng hơn Make.
Nếu bạn muốn quản lý phụ thuộc cho các thư viện giống như Java, Maven là lựa chọn kinh điển, nhưng cá nhân tôi thích Buildr hơn rất nhiều. Nó nhanh hơn và dễ tùy chỉnh hơn nhiều (dựa trên Rake). Thật không may, nó vẫn chưa phổ biến như Maven.
Hệ thống tạo của Ruby được gọi là rake: http://rake.rubyforge.org/
Có vẻ khá hứa hẹn.
Luôn có Ant: http://ant.apache.org , mà cá nhân tôi thấy thật kinh khủng. Tuy nhiên, đó là tiêu chuẩn thực tế để phát triển Java.
Tôi vẫn thích thực hiện sau khi đã xem xét một loạt các lựa chọn thay thế. Khi bạn tự động tạo các phụ thuộc thông qua trình biên dịch hoặc một cái gì đó như fastdep thì không còn nhiều việc phải làm. Đặc biệt, tôi không muốn tập lệnh xây dựng của mình bị ràng buộc với ngôn ngữ triển khai và tôi không thích viết nội dung bằng XML khi có sẵn các lựa chọn thay thế dễ đọc hơn. Tuy nhiên, một công cụ thể hiện một ngôn ngữ có mục đích chung là có lợi, nhưng một ngôn ngữ thông dịch khác thì không (afaik). Sai với Make là gì? có thể thu hút quan điểm của bạn về việc rời bỏ thực tế.
/ Allan
FlowTracer từ RTDA là một lựa chọn tốt khác mà tôi đã thấy được sử dụng cho mục đích thương mại trong môi trường quy mô lớn (hàng chục nghìn công việc): http://www.rtda.com/flowtracer-design-flow-infra Structure-software
Nó có GUI hiển thị biểu đồ phụ thuộc với các hộp được mã hóa màu cho các công việc và hình bầu dục cho các tệp. Khi số lượng công việc và tệp tăng cao, một công cụ dựa trên GUI như FlowTracer là khá cần thiết.
Chi phí thiết lập ban đầu cao hơn Make. Có một đường cong học tập để thiết lập quy trình đầu tiên của bạn bằng cách sử dụng nó. Sau đó, nó sẽ nhanh hơn.
Tôi không chắc liệu bạn có đang đặt câu hỏi chính xác ở đây hay không.
Bạn có muốn làm đơn giản không? Trong trường hợp đó, bạn cần nhờ một người rất quen thuộc với việc tạo một chuỗi (M | m) akefiles để đơn giản hóa vấn đề của bạn.
Hay bạn đang muốn xem xét công nghệ cơ bản? Chúng ta có muốn thực thi một kiến trúc kiểu thiết kế theo hợp đồng được xây dựng trong và thực thi trong thiết kế mã không? Hoặc có thể, bản thân ngôn ngữ, ví dụ như Ada và khái niệm về thông số kỹ thuật (giao diện) và nội dung (triển khai)?
Hướng đi của bạn chắc chắn sẽ ảnh hưởng đến kết quả tiềm năng của một câu hỏi như vậy?
Về cơ bản, các cách mới để xây dựng hệ thống chỉ từ những thành phần đã thực sự thay đổi so với việc áp dụng công nghệ mới có các cơ chế được thiết kế sẵn như vậy.
Xin lỗi, đây không phải là câu trả lời trực tiếp. Chỉ muốn thử và giúp bạn đánh giá xem bạn muốn đi theo con đường nào.
chúc mừng,
Rob
make
quá đơn giản.