2012-01-23 36 views
6

Với make install Tôi có thể sao chép tệp nhị phân của mình, định cấu hình v.v. sang thư mục đích để thực thi.cmake "cài đặt" cho máy từ xa?

Bây giờ tôi có các tình huống sau đây: chúng tôi có thiết lập máy ảo như một build host, và một máy Linux thực khác nhau như một nền tảng mục tiêu.

Tôi muốn có make install sao chép tệp trực tiếp trong một thư mục trên máy từ xa của mình (qua scp hoặc tương tự). Làm thế nào tôi có thể đạt được điều đó?

+0

Vâng, hãy thực hiện thực thi 'scp'. Tiền tố –

Trả lời

1

make có thể hoạt động với một tiền tố cụ thể trong quá trình cài đặt:

make prefix=$dest/usr install 

Một giải pháp cho vấn đề của bạn là để

  • gắn kết hệ thống tập tin của máy mục tiêu về xây dựng máy tính của bạn. Điều này có thể được thực hiện thông qua nfs (kéo dài) hoặc thông qua sshfs (dễ dàng hơn),
  • bộ $ dest đến mountpoint và chạy lệnh trên
+0

dường như không làm gì cả. DESTDIR hoạt động (như trong câu trả lời khác.) Tuy nhiên, việc gắn kết là cách để làm cho nó hoạt động cùng một lúc (và máy chủ có thể được điều khiển từ xa bằng cách sử dụng một SSH mount cho các máy tính mạng cục bộ.) –

5

Bạn thường có thể làm

make install DESTDIR=/tmp/mydest/ 

sau đó lưu trữ mà thư mục đích

tar czvf /tmp/mydest.tgz -C /tmp mydest 

sau đó sao chép mà lưu trữ đến nơi hẻo lánh

scp /tmp/mydest.tgz remote:tmp/ 

cuối cùng, tar các kho lưu trữ ở điều khiển từ xa và sao chép nó vào vị trí thích hợp

+0

Thực ra tôi muốn ngăn chặn tất cả các bước trung gian này. Tôi đoán cmake sử dụng lệnh copy (cp) để sao chép các tập tin. Có phải bằng cách nào đó để nói với cmake để sử dụng scp thay vì ... – Danoo

+0

DESTDIR đã làm việc với cmake Makefiles. Chính xác những gì tôi cần. –

+0

Thường thì nguồn đi kèm với một tệp có tên "README". Nội dung của tập tin đó có thể đưa ra một đầu mối. Ví dụ pcre-8.39 gợi ý sử dụng 'make dist' và/hoặc' make distcheck' để tạo tarballs. –

1

Sử dụng cmake 2.8.14, lệnh "add_custom_command" vào CMakeLists.txt, có thể cũng được sử dụng:

add_custom_command(TARGET my_target POST_BUILD COMMAND scp $<TARGET_FILE:my_target> [email protected]_host:dest_dir_path) 

Ưu điểm: chỉ gọi khi mục tiêu được xây dựng lại.

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