Подтвердить что ты не робот

Как использовать ccache выборочно?

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

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

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

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

Существуют ли более эффективные способы использования ccache выборочно, не всегда?

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

4b9b3361

Ответ 1

Чтобы просто обойти ccache:

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.

...

Ответ 2

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

Итак, вы могли просто сделать

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

когда вы хотите создать ccache.

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

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

Ответ 3

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