2011-10-16 49 views
7

Tôi đã làm việc trên dự án mã nguồn mở khác nhau, trong đó liên quan đến việc C++ thư viện sau (& khác):Windows gói-manager cho C++ thư viện

  • MuPDF
  • Boost
  • FreeType
  • GTKmm
  • hummus Thư viện PDF
  • LibTiff
  • libxml2
  • Wt xpdf
  • xpdf
  • Poppler
  • ZLib

Nó thường mất nhiều thời gian để cấu hình các thư viện này, khi thiết lập chúng trên một máy sạch. Có cách nào để tự động hóa việc grabbing của tất cả các phụ thuộc trên một cửa sổ máy?

Gần nhất tôi đã tìm thấy là CMake, kiểm tra để đảm bảo rằng bạn đã cài đặt/trích xuất phụ thuộc trước khi tạo tệp dự án của bạn. Nhưng tôi đã không tìm thấy bất cứ điều gì cho Windows mà có thể phân tích danh sách các phụ thuộc và sau đó tải về + cài đặt các phiên bản yêu cầu.

Vui lòng giới thiệu trình quản lý gói cho Windows với các thư viện C++ cập nhật.

Trả lời

2

Hãy xem Hunter package manager khi bạn đã sử dụng CMake để thiết lập dự án của mình. Nó tự động tải xuống và xây dựng các phụ thuộc của bạn chỉ với một vài dòng mã cmake bổ sung. Hunter dựa trên các mục tiêu xuất khẩu và nhập khẩu cmake.

Ví dụ, nếu bạn muốn sử dụng thư viện GoogleTest trong dự án dựa cmake của bạn, bạn sẽ thêm dòng sau vào CMakeLists.txt gốc của bạn

# file root CMakeLists.txt 

cmake_minimum_required(VERSION 3.0) 

# To get hunter you need to download and include a single cmake file 
# see documentation for correct name 
include("../gate.cmake") 


project(download-gtest) 

# set the location of all your hunter-packages 
set(HUNTER_ROOT_DIR C:/CppLibraries/HunterLibraries) 

# This call automaticall downloads and compiles gtest the first time 
# cmake is executed. The library is then cached in the HUNTER_ROOT_DIR 
hunter_add_package(GTest) 

# Now the GTest library can be found and linked to by your own project 
find_package(GTest CONFIG REQUIRED) 

add_executable(foo foo.cpp) 
target_link_libraries(foo GTest::main) 

Không phải tất cả các thư viện bạn liệt kê có sẵn như "Hunter gói "nhưng dự án là mã nguồn mở để bạn có thể tạo các gói hunter cho các phụ thuộc của bạn và cam kết chúng vào dự án. Here là danh sách các thư viện đã có sẵn dưới dạng gói hunter.

Điều này sẽ không giải quyết tất cả các vấn đề của bạn ra khỏi hộp vì bạn phải tạo các gói hunter cho các phụ thuộc của bạn. Nhưng khung công tác hiện tại đã thực hiện rất nhiều công việc và tốt hơn nên sử dụng nó thay vì có một giải pháp tự tạo một nửa.

+0

Tôi nghĩ đó là điều gần nhất với những gì tôi đang tìm kiếm ~ 5 năm trước! –

1

Windows không có trình quản lý gói. Truy cập trang web của thư viện và tải xuống bản dựng Windows nếu chúng cung cấp bất kỳ.

Có một số lựa chọn thay thế, nhưng không phải không có nhược điểm:

  • Cygwin: cung cấp một quản lý gói đẹp, nhưng tất cả các mã nhị phân được xây dựng cho Cygwin, có nghĩa là họ chạy chậm hơn so với tương đương mẹ đẻ của họ, bất kỳ ứng dụng sử dụng chúng sẽ liên kết đến Cygwin DLL và bạn bị mắc kẹt với giấy phép đó. Ngoài ra việc sử dụng các API Win32 bản địa đôi khi phiền hà do không tương thích với mô phỏng POSIX được cung cấp. Chỉ dành cho GCC.
  • MinGW-get: là trình quản lý gói cho trình biên dịch MinGW.org. Đây là những Win32 nhị phân bản địa, nhưng chỉ để sử dụng với GCC của MinGW.

Không có trình quản lý gói hoặc thứ hơi tương đương với bất kỳ thứ gì có liên quan đến Visual Studio hoặc MinGW-w64.

+0

Tôi e rằng đó là trường hợp; Tôi sẽ giữ cho câu hỏi mở mặc dù, trong trường hợp ai đó đã tìm thấy/tạo ra một ... –

+0

Sẽ có vô số bản sao nhị phân được duy trì: cho mỗi msvcr * dll, cho mỗi bản phát hành Visual Studio (chúng ngắt C++ Khả năng tương thích ABI với mỗi bản phát hành (SP)), đối với mỗi phiên bản MinGW (về mặt kỹ thuật có thể liên kết đến tất cả các phiên bản dll msvcr *). Tôi không nghĩ rằng nó là rất nhiều có thể mà không tải và vô số công việc vô nghĩa. Điều này thật không may, tôi biết. – rubenvb

2

Không có quản lý gói trên Windows. Trên các nhà phát triển Windows thường sử dụng môi trường phát triển tất cả mọi thứ-và-nhà bếp-sink-thổi đầy đủ và sản xuất các ứng dụng nguyên khối mình, vận chuyển với tất cả các phụ thuộc.

1

Những gì tôi đã tìm thấy:

điều gần nhất với những gì tôi đang tìm:

Đáng tiếc là nó không có bất kỳ thư viện tôi yêu cầu trong kho lưu trữ của nó.

Vì vậy, tôi đã kết thúc nhận hầu hết các thư viện từ số KDE4windows project và tùy chỉnh xây dựng phần còn lại.

1

Npackd là trình quản lý gói cho Windows. Có một mặc định repository for C++ libraries và cũng là một bên thứ ba repository cho Visual Studio 2010 64 bit thư viện. Boost và zlib đã có trong kho lưu trữ mặc định. Nếu bạn quyết định sử dụng Npackd, bạn có thể file an issue nếu bạn cần thư viện khác.

2

Biicode là trình quản lý phụ thuộc mới cho C++. Nó cũng có một vài thư viện mà bạn liệt kê. Biicode tự động quét các tệp nguồn của bạn cho các phụ thuộc, tải xuống và xây dựng chúng. Xem here cho một ví dụ rất thú vị bao gồm Freeglut.

2

Vcpkg, một dự án mã nguồn mở của Microsoft, giúp bạn nhận được thư viện C và C++ trên Windows.

+0

Họ sử dụng CMake ... Tôi chỉ cảm thấy khó chịu vì nó không phải là nền tảng chéo trong bất kỳ ý nghĩa nào. Đã được sử dụng Conan thời gian qua, nhưng số lượng các gói của họ đã không được tăng thực sự:/- EDIT: Thực ra tôi nghĩ rằng công cụ này có thể là những gì tôi đang tìm kiếm. Sẽ kiểm tra xem nó ra. +1 –