Mục tiêu: khi người dùng nhập 'tạo gói', tự động tìm gói libx11-dev (yêu cầu chương trình của tôi biên dịch) và, nếu không tìm thấy, hãy cài đặt nó. Đây là phiên bản rút gọn của makefile của tôi:Tự động cài đặt các gói từ bên trong makefile
PACKAGES = $(shell if [ -z $(dpkg -l | grep libx11-dev) ]; then sudo apt-get install libx11-dev; fi)
[other definitions and targets]
packages: $(PACKAGES)
Khi tôi nhập 'make packages', tôi được nhắc nhập mật khẩu người dùng. Nếu được nhập chính xác, nó sẽ treo vô thời hạn.
Là những gì tôi đang cố gắng làm thậm chí có thể từ bên trong makefile? Nếu vậy, làm thế nào?
Cảm ơn rất nhiều.
Tôi thấy mẫu ở đây; kéo ra libx11-dev và nó có hoạt động trên một danh sách các gói không? –
@MadScientist Cảm ơn rất nhiều! Điều này làm việc, ngoại trừ nếu gói đã được cài đặt, tôi nhận được lỗi: "/ bin/sh: 1: [: ii: toán tử không mong muốn" có lẽ liên quan đến thực tế là đầu ra của lệnh dpkg -l | grep libx11-dev là "ii libx11-dev 2: 1.4.99.1-0ubuntu2" –
Thêm dấu ngoặc kép: '[-z" \ 'dpkg -l | grep libx11-dev \' "]' – MadScientist