it-swarm-vi.tech

Hứa hẹn thay thế để thực hiện?

Tôi đã sử dụng make và makefiles trong nhiều năm, và mặc dù khái niệm này là âm thanh, việc triển khai có một cái gì đó được mong muốn.

Có ai tìm thấy bất kỳ sự thay thế tốt nào để làm cho vấn đề đó không quá phức tạp không?

73
mike511

kiểm tra SCons . Ví dụ, Doom 3 và Blender sử dụng nó.

26
WaldWolf

Tôi có rất nhiều người bạn đã thề với CMake để phát triển đa nền tảng:

http://www.cmake.org/

Đó là hệ thống xây dựng được sử dụng cho VTK (trong số những thứ khác), là thư viện C++ với Python, Tcl và Javađa nền tảng _ ràng buộc. Tôi nghĩ đó có lẽ là điều ít phức tạp nhất mà bạn sẽ tìm thấy với nhiều khả năng đó.

Bạn luôn có thể thử tiêu chuẩn autotools . Các tệp tự động khá dễ dàng để kết hợp với nhau nếu bạn chỉ chạy trên Unix và nếu bạn dính vào C/C++. Tích hợp phức tạp hơn và autotools khác xa với hệ thống đơn giản nhất từ ​​trước đến nay.

25
Todd Gamblin

Một số dự án Gnome đã được chuyển sang waf .

Nó dựa trên Python, 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.

15
Eric Talevich

Tôi khuyên bạn nên sử dụng Rake . Đây là công cụ đơn giản nhất mà tôi tìm thấy.

Tuy nhiên, các công cụ tốt khác mà tôi đã sử dụng, nếu Ruby không phải là thứ của bạn, là:

  • AAP (Python)
  • SCons (Python)
  • Ant (Java, cấu hình bằng XML, khá phức tạp)
12
Clinton N. Dreisbach

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.

  • bạn có thể xác định cách cập nhật tác vụ/quy tắc (không chỉ kiểm tra dấu thời gian, không yêu cầu tệp mục tiêu)
  • phụ thuộc có thể được tính toán linh hoạt bởi các nhiệm vụ khác
  • hành động của task có thể là python hoặc lệnh Shell
12
schettino72

Hãy nhận biết ninja công cụ xây dựng (v1.8.2 tháng 9 năm 2017) bị ảnh hưởng bởi tupredo .

Trình tạo tệp xây dựng cmake (ví dụ: đối với Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) cũng có thể tạo ninja xây dựng tệp kể từ phiên bản 2.8. 8 (Tháng 4 năm 2012) và, afaik, ninja hiện thậm chí là công cụ xây dựng mặc định được sử dụng bởi cmake.

Nó được cho là vượt trội hơn công cụ make (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 sử dụng một cách thuận tiện.

Lưu ý rằng đôi khi thời gian biên dịch cải thiện c/c ++ bị hạn chế do các tiêu đề được bao gồm thông qua bộ tiền xử lý (đặc biệt là khi sử dụng lib chỉ có tiêu đề, ví dụ boost & eigen ) hy vọng sẽ được thay thế bằng đề xuất của mô-đun (trong bài đánh giá kỹ thuật về c ++ 11 hoặc cuối cùng là trong c ++ 1y). Kiểm tra này trình bày để biết chi tiết về vấn đề này.

5
Hotschke

Tôi đã viết một công cụ có tên sake đã cố gắng viết những thứ giống như makefile rất dễ đọc và viết.

4
tonyfischetti

Nó phụ thuộc vào những gì bạn đang cố gắng làm. Nếu tất cả bạn muốn là phụ thuộc mục tiêu theo kiểu tạo và gọi lệnh, 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 đẹp, nhưng có thể 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ố dài, nhưng nó hỗ trợ tốt hơn cho việc xây dựng các ngôn ngữ giống như Java (bao gồm cả Scala và Groovy). Ngoài ra, Ant có sẵn ở mọi nơi. Đó là lý do chính tôi sử dụng nó. Bởi vì nó hoạt động ổn định trên Windows, nó thực sự thậm chí còn nhiều nền tảng hơn so với 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 chính tắc, nhưng cá nhân tôi thích Buildr hơn rất nhiều. Nó nhanh hơn và dễ dàng hơn để tùy chỉnh (dựa trên Rake). Thật không may, nó không phổ biến như Maven.

3
Daniel Spiewak

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, sẽ không còn nhiều việc phải làm. Cụ thể, tôi không muốn tập lệnh xây dựng của mình được gắn 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ó nhiều lựa chọn thay thế dễ đọc hơn. Một công cụ thể hiện một ngôn ngữ có mục đích chung có giá trị, nhưng một ngôn ngữ được giải thích khác thì không (afaik). Điều gì sai với Make? có thể thu hút quan điểm của bạn về việc di chuyển khỏi make.

/ Allan

2
Allan Wind

Hệ thống tạo của Ruby được gọi là rake: http://rake.rubyforge.org/

Trông khá hứa hẹn.

Luôn có Ant: http://ant.Apache.org , mà cá nhân tôi thấy khủng khiếp. Tuy nhiên, đó là tiêu chuẩn thực tế cho phát triển Java.

1
davetron5000

Tôi không chắc nếu bạn đang hỏi câu hỏi chính xác ở đây.

Bạn có sau khi thực hiện đơn giản hóa? Trong trường hợp đó, bạn cần phải nhờ một người rất quen thuộc thực hiện để tạo ra một loạt các akefiles (M | m) sẽ đơn giản hóa vấn đề của bạn.

Hay bạn đang muốn nhìn vào 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 và thi hành trong thiết kế mã không? Hoặc có thể, chính ngôn ngữ, ví dụ: Ada và khái niệm về thông số kỹ thuật (giao diện) và cơ quan (triển khai)?

Bạn đang theo hướng nào 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 xây dựng hệ thống mới chỉ từ những thành phần đã thực sự thay đổi so với việc áp dụng các công nghệ mới có cơ chế như vậy được thiết kế theo thiết kế.

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á con đường nào bạn muốn đi xuống.

chúc mừng

Cướp

0
Rob Wells

FlowTracer từ RTDA là một lựa chọn tốt khác mà tôi đã thấy được sử dụng 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-infr Hạ tầng-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 luồng đầu tiên của bạn bằng cách sử dụng nó. Sau đó, nó sẽ nhanh hơn.

0
bu11d0zer