2014-12-27 18 views
5

tôi đã được thử nghiệm DUB và tôi muốn cài đặt derelcitsdl2 vớiQuản lý phụ thuộc C với DUB

"dependencies": { 
    "derelict-sdl2": ">=1.2.10" 
} 

Nhưng nó ngay lập tức ném một lỗi runtime khi tôi chạy nó. Nó nói với tôi rằng nó không thể tìm thấy các tập tin * .so.

Khi tôi xây dựng một dự án nền tảng chéo, tôi không muốn phụ thuộc vào các gói hệ thống toàn cầu như thế và điều này rất có thể sẽ là một vấn đề trên Windows.

Có thể chạy bản dựng với DUB không?

Cái gì đó có thể trông như thế này

"dependencies": { 
    "derelict-sdl2": ">=1.2.10" 
} 
"c-dependency-sdl":{ 
    git clone sdllink && cd sdl && cmake . && make && make install clib 
} 

tôi không tìm thấy một thông tin trên trang web DUB mà nói với tôi đó là rất có thể là không thể.

Làm cách nào để bạn tạo dự án của mình cho các nền tảng khác nhau?

Tôi có cần phải viết các tập lệnh .sh/.bat cho việc này không? Làm cách nào để chỉ định đường dẫn tìm kiếm cục bộ?

Trả lời

5

Theo như tôi biết, bản lồng tiếng không xử lý việc cài đặt phụ thuộc không lồng tiếng. Bạn có thể mô tả các yêu cầu thư viện hệ thống với mục nhập systemDependencies, mục này sẽ "hiển thị trên sổ đăng ký và sẽ được hiển thị trong trường hợp lỗi trình liên kết", nhưng chúng sẽ không được cài đặt tự động.

Bạn có thể sử dụng preGenerateCommands hoặc preBuildCommands để thực thi các lệnh trình bao như bạn đã mô tả ở trên. Tôi sẽ đưa cài đặt script trong sh/.bat kịch bản như bạn mô tả ở trên (vì vậy họ sử dụng được cho người dùng không dub), và sau đó đặt một cái gì đó như thế này trong dub.json:

"preGenerateCommands-posix": [ "./setup.sh" ], 
"preGenerateCommands-windows": [ "./setup.bat" ] 

Trên Linux, tôi sẽ thường cho rằng các tệp .so cần thiết có sẵn trên đường dẫn tìm kiếm chuẩn (hoặc có sẵn để cài đặt thông qua trình quản lý gói), đặc biệt đối với một cái gì đó phổ biến như sdl.

Theo như cách xác định đường dẫn tìm kiếm, tôi chỉ sử dụng lflags:

"lflags": [ "-L./ext/sdl/lib" ] (or wherever the local libs are) 

Nguồn: DUB Package Format

Khai báo đầy đủ: Tôi đã không thực sự cố gắng sử dụng preGenerateCommands, nhưng nó có vẻ giống như những gì bạn cần.

1

Đối với những gì đáng giá, tôi chuyển vấn đề này xung quanh và sử dụng make/gmake để thúc đẩy việc xây dựng cấp cao nhất. Điều này xử lý các phụ thuộc C/C++ (trong trường hợp của tôi được cài đặt vào/usr/local/lib và/usr/local/include) và sử dụng Dub để xây dựng các phần D-language (tham chiếu đường dẫn phụ thuộc như lflags trong dub.json).

Các vấn đề liên quan