2012-11-20 28 views
28

Tôi đang làm việc trong một dự án mất nhiều thời gian để xây dựng (10-15) phút. Tôi đã biên dịch lại để xác minh xem có lỗi biên dịch hay không. Bây giờ tôi muốn thay đổi thư mục cài đặt để tôi có một phiên bản mới có thể thực thi được với các thay đổi mới. Có phương pháp nào để sửa đổi đường dẫn cài đặt để cài đặt 'cài đặt' thành vị trí mới thay vì vị trí cũ không?cách sửa đổi đường dẫn cài đặt mà không cần chạy lại tập lệnh cấu hình/cmake lần nữa

+0

bản sao có thể có của [Thực hiện cài đặt - nhưng không phải là thư mục mặc định?] (Http://stackoverflow.com/questions/3239343/make-install-but-not-to-default-directories) –

Trả lời

45

Tạo ảnh makefiles hỗ trợ DESTDIR coding convention cho makefiles. Do đó bạn có thể ghi đè vị trí cài đặt mặc định bằng cách đặt biến số DESTDIR khi gọi thực hiện:

$ make install DESTDIR=/opt/local 

Không cần phải chạy lại CMake.

9

Chạy CMake với -DCMAKE_INSTALL_PREFIX=<somewhere different to last time> không được làm cho dự án của bạn cần được biên dịch lại. Nếu bạn chuyển các tham số dòng lệnh khác cho CMake, ví dụ: thay đổi cờ biên dịch, rằng sẽ buộc xây dựng lại các mục tiêu bị ảnh hưởng, nhưng chỉ cần thay đổi tiền tố cài đặt sẽ không.

+0

Có cách nào để thay đổi tiền tố cài đặt mà không cần chạy lại cmake? Có vẻ như CPACK có khả năng làm như vậy, nhưng tôi không thể nhìn thấy một cách để tôi làm điều đó trực tiếp chỉ bằng cách sử dụng make + một số biến. Nếu tôi muốn tạo một gói với trình đóng gói của riêng mình, tôi muốn nhận những thứ dưới/usr thay vì/usr/local, nhưng tôi muốn làm việc đó mà không cần phải hỏi lập trình viên chạy cmake với đúng CMAKE_INSTALL_PREFIX .. –

+0

Vâng, bạn có thể sử dụng 'set' trong CMakeLists của bạn.txt để mã hóa cứng giá trị của 'CMAKE_INSTALL_PREFIX', nhưng tôi nghĩ điều này là khá phổ biến và có thể bắt gặp những người đã quen với CMake. Có lẽ một lựa chọn tốt hơn là in ra một 'thông điệp' trong CMakeLists.txt của bạn, hiển thị giá trị hiện tại của' CMAKE_INSTALL_PREFIX' và cũng đưa ra hướng dẫn về cách thay đổi giá trị. Một cái gì đó như 'message (" Đường dẫn cài đặt hiện tại là $ {CMAKE_INSTALL_PREFIX} ")' 'message (" Để thay đổi điều này: cmake. -DCMAKE_INSTALL_PREFIX = \ " \" ")' – Fraser

4

Chỉ trong trường hợp nếu ai đó không sử dụng CMake thì có một phương pháp để thực hiện điều đó trong Makefile. Nếu bạn có tệp Makefile.config được tạo trong thư mục xây dựng của mình, hãy tìm số prefix. Điều này prefix là cài đặt path nơi nhị phân/tiêu đề, vv sẽ được cài đặt. Thay đổi điều này sẽ cài đặt các tập tin nhị phân/tiêu đề để sửa đổi path.

16

Tôi không biết điều này có đúng hay không, nhưng tôi có thể đưa ra ví dụ về một ứng dụng mà the accepted answer bởi sakra không hoạt động bình thường. Nếu bạn thay đổi thư mục cài đặt bằng cách sửa đổi DESTDIR khi cài đặt ITK, nó sẽ chỉ thêm DESTDIR đến con đường đã hình thành cài đặt nó:

make install DESTDIR=/opt/local 

[...]

-- Installing: /opt/local/usr/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]

Mặt khác , sau this answer bởi Fraser sẽ dẫn đến đường dẫn cài đặt thích hợp mà không cần biên dịch lại:

cmake -DCMAKE_INSTALL_PREFIX=/opt/local /path/to/ITK_source 
make install 

[...]

-- Installing: /opt/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]

7

Định nghĩa kinh điển của DESTDIR và tiền tố là: các tệp được cài đặt vào tiền tố $ DESTDIR $, nhưng được chuẩn bị như vị trí cài đặt cuối cùng của chúng chỉ là tiền tố $.

Vì vậy, DESTDIR chỉ dành cho những người xây dựng gói hoặc tarballs của các tệp nhị phân; CMAKE_INSTALL_PREFIX dành cho bất kỳ ai muốn chỉ định nơi các tệp nhị phân được xây dựng nên tồn tại ở cuối.

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