2013-01-17 36 views
7

Quy trình phát triển được đề xuất cho các chương trình D sử dụng gói được sao chép từ github và được xây dựng riêng biệt là gì?D Quy trình phát triển

thường liên quan đến cách C++ dự án C/được xây dựng sử dụng làm, autotools, cmake vv

Hầu hết các chi tiết kỹ thuật xây dựng khác có một mục tiêu cài đặt. Nên có một mục tiêu cài đặt trong xây dựng hoặc chúng ta nên chỉ liên kết một thư viện trực tiếp từ nơi nó được đặt khi xây dựng và thêm đăng ký của nó bao gồm trong D_INCLUDE_PATH và sau đó trực tiếp cho họ bằng cách sử dụng DFLAGS=-I<D_INCLUDE_PATH>?

+1

+1 cho câu hỏi. Một số thời gian trước đây tôi cũng đang tìm kiếm điều này và không thể tìm thấy bất cứ điều gì. Đã kết thúc bằng cách sử dụng CMake cho các dự án của riêng tôi và tự cài đặt thư viện vào thư mục gốc cá nhân như '~/droot' (vì vậy các thư viện nằm trong' ~/droot/lib') và chỉ định đường dẫn này trong cấu hình CMake. Điều này là xa sự thoải mái của ví dụ: Java với Maven hoặc Go với 'go get'. –

+0

Có ai đã thử Shake with D không? http://community.haskell.org/~ndm/shake/ – Arlen

Trả lời

2

Tôi nhận ra nhận xét của tôi thực sự có thể là một câu trả lời cho câu hỏi, vì vậy ở đây là:

quá trình phát triển D không thể khác hơn tương tự như trong C hoặc C++ trên thế giới. Điều đó thực sự khó thấy sao? Hầu như tất cả các trình biên dịch C và C++ tạo mã "gốc". D không phải là ngoại lệ. Có dự án D.NET có thể nhắm mục tiêu .NET, nhưng nó không hoạt động trong nhiều năm ...

Hơn nữa, tất cả các công cụ được sử dụng trong các dự án dựa trên C/C++ đều có thể dễ dàng sử dụng. CMake có thể được sử dụng trong các dự án Java hoặc .NET. Tương tự với Make và/hoặc Autotools. Tại sao Maven và Ant phổ biến hơn trong thế giới Java là một câu chuyện khác.

Nói về chúng, bạn có thể sử dụng Maven hoặc Ant trong quá trình phát triển D! Tay xuống, bạn cần phải viết các plugin Maven của riêng bạn để làm cho nó dễ dàng hơn và linh hoạt hơn, nhưng nó có thể thực hiện được, và thực tế là một dự án rất hay.

Từ những gì tôi đã thấy, các lập trình viên D gắn bó với điều tốt, cũ Tạo hoặc viết kịch bản BASH để làm toàn bộ điều. Tuy nhiên, tôi đã thấy những người từ việc sử dụng nền tảng LycusWAF. Nếu bạn là lập trình viên Python, bạn sẽ chỉ yêu WAF. Nếu không, hãy thử những điều tương tự - Tôi đã thấy mọi người sử dụng SCons, Remake, Premake, vv ...

DSSS+Rebuild là điều gần nhất với một công cụ rất hữu ích như vậy được thực hiện với D. Thật không may là chúng đã chết. :(

tôi đang làm việc trên một công cụ maven-phong cách, nhưng xem xét số lượng thời gian tôi có - nó sẽ được sử dụng trong năm 2014. :)

+1

Trên thực tế, quá trình xây dựng D rất khác với C \ C++. C \ C++ sử dụng các tệp tiêu đề và bạn chỉ cần biên dịch lại tệp triển khai nếu nó được thay đổi, nếu một trong các tệp tiêu đề nó 'include' thay đổi, nếu một trong các tệp tiêu đề' include'd trong tệp 'header' được bao gồm bởi tập tin đó và vân vân. Nếu bạn thực hiện thay đổi trong tệp triển khai, bạn chỉ cần biên dịch lại tệp đó. D là khác nhau - API và triển khai nằm trong cùng một tệp, và D dựa nhiều vào lập trình meta mẫu vì vậy nếu bạn thay đổi một cái gì đó bạn phải biên dịch lại mọi thứ. Điều này làm cho việc xây dựng gia tăng không thể. –

+0

@IdanArye: Bình luận hay. Đây là lý do chính cho tôi hỏi. Các công cụ xây dựng truyền thống rất nhiều về việc chỉ định các phụ thuộc theo cách thủ công.Điều này không phải lúc nào cũng đúng cho quá trình xây dựng D. Ví dụ khi sử dụng DMD, bạn có thể tạo các tệp giao diện D (.di) để tăng tốc độ nhưng bạn không phải làm như vậy. –

+0

Tôi đồng ý với Idan, nhưng tôi không muốn đi vào chi tiết như vậy. Sau khi tất cả các câu hỏi không phải là về những người, nhưng về vòng đời tổng thể nếu tôi không nhầm. :) – DejanLekic