Chúng tôi đang đối mặt với các vấn đề tương tự trong công ty của chúng tôi. Quản lý các phiên bản tăng cường trong môi trường xây dựng sẽ không bao giờ dễ dàng. Với hơn 10 nhà phát triển, tất cả mã hóa trên (các) hệ thống của riêng họ, bạn sẽ cần một số loại tự động hóa. Trước tiên, tôi không nghĩ rằng nên lưu trữ các bản sao của các thư viện lớn như tăng SVN hoặc bất kỳ hệ thống SCM nào cho vấn đề đó, đó không phải là những hệ thống được thiết kế, ngoại trừ nếu bạn định sửa đổi mã bản thân bạn. Nhưng hãy giả sử bạn không làm điều đó.
Dưới đây là cách chúng tôi quản lý ngay bây giờ, sau khi thử nhiều phương pháp khác nhau, điều này phù hợp nhất với chúng tôi.
Đối với mỗi phiên bản tăng cường mà chúng tôi sử dụng, chúng tôi đặt toàn bộ cây (giải nén) trên máy chủ tệp và thêm các thư mục phụ, một cho mỗi kiến trúc/trình biên dịch kết hợp, nơi chúng tôi đặt các thư viện đã biên dịch. Chúng tôi giữ bản sao của những cây trên mọi hệ thống xây dựng và trong môi trường hệ thống toàn cầu, chúng tôi thêm các biến như:
BOOST_1_48=C:\boost\1.48 # Windows environment var
hoặc
BOOST_1_48=/usr/local/boost/1.48 # Linux environment var, e.g. in /etc/profile.d/boost.sh
Thư mục này chứa các cây tăng (. Boost/* hpp) và các lib được biên dịch trước (ví dụ: lib/win/x64/msvc2010/libboost_system * .lib, ...)
Tất cả các cấu hình xây dựng (so với các giải pháp, tập tin thuộc tính, gnu makefiles, ...) xác định biến nội bộ , nhập vars môi trường, như:
BOOSTROOT=$(BOOST_1_48) # e.g. in a Makefile, or an included Makefile
và các quy tắc xây dựng tiếp theo đều sử dụng cài đặt BOOSTROOT để xác định đường dẫn tìm kiếm và thư viện, ví dụ:
CXXFLAGS += -I$(BOOSTROOT)
LFLAGS += -L$(BOOSTROOT)/lib/linux/x64/ubuntu/precise
LFLAGS += -lboost_date_time
Lý do giữ bản sao cục bộ là tốc độ biên dịch. Nó chiếm khá nhiều không gian đĩa, đặc biệt là các thư viện biên dịch, nhưng dung lượng lưu trữ rẻ và một nhà phát triển mất rất nhiều thời gian biên dịch mã thì không. Ngoài ra, điều này chỉ cần được sao chép một lần.
Lý do sử dụng các môi trường toàn cầu là cấu hình xây dựng có thể chuyển từ hệ thống này sang hệ thống khác và do đó có thể được kiểm tra an toàn vào hệ thống SCM của bạn.
Để làm mịn mọi thứ một chút, chúng tôi đã phát triển một công cụ nhỏ để quản lý việc sao chép và thiết lập môi trường toàn cầu. Với một CLI, điều này thậm chí có thể được bao gồm trong quá trình xây dựng.
Môi trường làm việc khác nhau có nghĩa là các quy tắc và nền văn hóa khác nhau, nhưng hãy tin tôi, chúng tôi đã thử nhiều thứ và cuối cùng, chúng tôi quyết định xác định một số loại quy ước. Có thể chúng ta có thể truyền cảm hứng cho bạn ...
Nếu bạn đang sử dụng 'g ++', tại sao không sử dụng' gzip' để khớp? Haha trò đùa xấu, +1. –
Di chuyển khỏi SVN sang hệ thống SCM hiện đại? Hoặc bạn có thể nén thư mục tăng lên để đưa vào SVN để làm cho nó nhanh hơn để kiểm tra, và sau đó có một phần của quá trình xây dựng được giải nén tập tin đó nếu cần thiết. – bames53
@ bames53 Nghĩ về nó. Nó sẽ không tiết kiệm nhiều thời gian trên các cửa sổ, vì việc khai thác nhiều tập tin nhỏ. Chắc chắn, nó sẽ tốt hơn một chút. – Notinlist