2

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

Поэтому мой вопрос: неэффективно ли иметь символическую ссылку на символическую ссылку на другой файл (например, для заголовка 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 ответ1

2

Не уверен, что вы имеете в виду неэффективно, но я думаю, что нет.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .