Неэффективно ли иметь символические ссылки на символические ссылки?

Неэффективно ли иметь символические ссылки на символические ссылки?

Мы настраиваем ряд Makefiles, где мы хотим иметь каталог include на уровне проекта, который будет иметь символические ссылки на файлы include на уровне подпроекта. Многие разработчики подпроектов решили, что их файлы include также будут символическими ссылками на еще один каталог, где находится фактическое программное обеспечение.

Итак, мой вопрос: неэффективно ли иметь символическую ссылку на символическую ссылку на другой файл (например, заголовок C++, который может быть включен десятки и более раз во время компиляции)?

Пример дерева каталогов:

/project/include/
                 x_header1.h -> /project/src/csci_x/include/header1.h
                 x_header2.h -> /project/src/csci_x/include/header2.h
/project/src/csci_x/
                    include/
                            header1.h -> /project/src/csci_x/local_1/cxx/header1.h
                            header2.h -> /project/src/csci_x/local_2/cxx/header2.h
                    local_1/cxx/
                                module1.cpp
                                header1.h
                    local_2/cxx/
                                module2.cpp
                                header2.h

решение1

Не совсем понимаю, что вы имеете в виду под неэффективностью, но полагаю, что нет.

Ядро обрабатывает все символические ссылки, gnumake просто делает open() и получает файл. Любое пользовательское приложение не заботится (ну, редко заботится) о том, символическая это ссылка или нет, оно просто получает файл.

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

Связанный контент