2010-04-22 2 views
10

Мне нужно скомпилировать несколько версий приложения, написанного на C++, и я думаю использовать ccache для ускорения процесса.Как использовать ccache выборочно?

ccache howtos имеют примеры, которые предлагают создать символические ссылки с именем gcc, g ++ и т. Д. И убедиться, что они появляются в PATH перед исходными gcc-бинарниками, поэтому вместо этого используется ccache.

До сих пор так хорошо, но я бы хотел использовать ccache только при компиляции этого конкретного приложения, а не всегда.

Конечно, я могу написать сценарий оболочки, который будет пытаться создавать эти символические ссылки каждый раз, когда я хочу скомпилировать приложение и удалю их, когда приложение будет скомпилировано. Но это выглядит как злоупотребление файловой системы для меня.

Есть ли лучшие способы использования ccache выборочно, не всегда?

Для компиляции одного файла исходного кода я могу просто вручную вызвать ccache вместо gcc и сделать это, но мне нужно иметь дело с сложным приложением, которое использует автоматическую систему сборки для нескольких файлов исходного кода.

ответ

3

Что такое ОС? Linux? Большинство упакованных версий ccache уже помещают эти символические ссылки в каталог, например, на моем компьютере Fedora, в котором они живут/usr/lib64/ccache.

Таким образом, вы можете просто сделать

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

, когда вы хотите построить с кэш компилятора.

Большинство пакетов также устанавливают файл в /etc/profile.d/, который автоматически включает ccache, добавляя его в PATH, как указано выше.

Если это так, то установите CCACHE_DISABLE=1 (см. man ccache для получения дополнительной информации), чтобы отключить ccache - ccache все равно будет запущен, но просто вызовет настоящий компилятор.

+0

Настройка CCACHE_DISABLE, похоже, в порядке, спасибо. – 2010-04-22 17:00:44

1

Альтернативой созданию символических ссылок является использование ccache gcc в качестве компилятора C и ccache g++ в качестве компилятора C++. Например, если ваш Makefile использует переменные CC и CXX для указания компиляторов, вы можете построить с помощью make CC="ccache gcc" CXX="ccache g++" или настроить его во время настройки (./configure CC="ccache gcc" CXX="ccache g++").

9

Для обходного просто: кэш компилятора

export CCACHE_DISABLE=1 

Для получения дополнительной информации:

man ccache 

...

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

...