Находить и т.д. и делиться каталогами в Linux - PullRequest
2 голосов
/ 02 августа 2010

Я пишу программу для Linux на C ++, и мне нужно хранить некоторые дополнительные данные, такие как изображения. Такие вещи обычно находятся в / usr / share в Linux.

Пользователь может решить, куда устанавливать программное обеспечение (я использую CMake), поэтому я должен либо использовать / usr / share, / usr / local / share, / home / theuser / somefolder / share, либо любое другое, в зависимости от где он его установил.

Обычно я делаю это, выясняя абсолютный путь к моему двоичному файлу, вырезая конечный «мусорный контейнер» из пути и заменяя его «общим». Однако это довольно громоздко и не менее элегантно, поэтому мне было интересно, как это делали другие люди. Я использую Boost, но я не могу найти соответствующие функции.

Мне нужен только каталог share для этого проекта, но мне также было бы интересно узнать, как вы делаете это с каталогом etc (мой подход там не совсем работает, потому что бинарный файл может находиться в / usr / bin, пока файлы конфигурации находятся в / etc)

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Система сборки должна передать желаемое место установки в качестве определения во время процесса сборки.Итак,

gcc -DDATA_DIR=/custom/build/location ...

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

0 голосов
/ 02 августа 2010

Вы можете использовать пути к каталогам по умолчанию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...