2010-04-22 34 views
10

Tôi phải biên dịch nhiều phiên bản của một ứng dụng được viết bằng C++ và tôi nghĩ sử dụng ccache để tăng tốc quá trình.Làm thế nào để sử dụng ccache chọn lọc?

ccache howtos có các ví dụ gợi ý tạo liên kết tượng trưng có tên gcc, g ++ vv và đảm bảo chúng xuất hiện trong PATH trước mã nhị phân gcc gốc, do đó ccache được sử dụng thay thế.

Cho đến nay rất tốt, nhưng tôi chỉ muốn sử dụng ccache khi biên dịch ứng dụng cụ thể này, không phải lúc nào.

Tất nhiên, tôi có thể viết một tập lệnh shell sẽ cố tạo các liên kết tượng trưng này mỗi khi tôi muốn biên dịch ứng dụng và sẽ xóa chúng khi ứng dụng được biên dịch. Nhưng điều này có vẻ như lạm dụng hệ thống tập tin đối với tôi.

Có cách nào tốt hơn để sử dụng ccache một cách chọn lọc, không phải lúc nào?

Để biên soạn một tệp mã nguồn duy nhất, tôi có thể gọi ccache theo cách thủ công thay vì gcc và được thực hiện, nhưng tôi phải xử lý một ứng dụng phức tạp sử dụng hệ thống xây dựng tự động cho nhiều tệp mã nguồn.

Trả lời

3

Hệ điều hành nào? Linux? Hầu hết các phiên bản đóng gói của ccache đã đặt các liên kết đó vào một thư mục, ví dụ trên máy Fedora của chúng, chúng nằm trong/usr/lib64/ccache.

Vì vậy, bạn chỉ có thể làm

PATH=/usr/lib64/ccache:${PATH} make 

khi bạn muốn xây dựng với ccache.

Hầu hết các gói cũng cài đặt một tệp trong /etc/profile.d/ để tự động kích hoạt ccache, bằng cách thêm nó vào PATH như trên.

Nếu đó là trường hợp trên hệ thống của bạn, chỉ cần đặt CCACHE_DISABLE=1 (xem man ccache để biết thêm) trong môi trường của bạn để tắt ccache - ccache sẽ vẫn chạy, nhưng đơn giản sẽ gọi trình biên dịch thực.

+0

Cài đặt CCACHE_DISABLE có vẻ ổn, cảm ơn bạn. –

1

Cách thay thế để tạo liên kết tượng trưng là sử dụng rõ ràng ccache gcc làm trình biên dịch C và ccache g++ làm trình biên dịch C++. Ví dụ: nếu Makefile của bạn sử dụng các biến CCCXX để chỉ định trình biên dịch, bạn có thể tạo với make CC="ccache gcc" CXX="ccache g++" hoặc thiết lập tại thời điểm định cấu hình (./configure CC="ccache gcc" CXX="ccache g++").

9

Để bypass ccache chỉ:

export CCACHE_DISABLE=1 

Để biết thêm thông:

man ccache 

...

 If you set the environment variable CCACHE_DISABLE then ccache will just call the real 
     compiler, bypassing the cache completely. 

...

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