Предположим, я пишу библиотеку или набор инструментов mytool
, где определен класс MyTool
, который могут использовать другие люди.Предположим, у меня есть дерево каталогов, подобное этому:
project
| - program1
| - main1.cpp
...
| - mytool
| - mytool.h
| - mytool.cpp
| - data.txt
в tool1.cpp
Я использую внешний двоичный огромный файл data.dat
:
ifsteam f("data.txt");
main1.cpp
использует mytool, ноесли mytool.(s)o
связан с main1.o
, программа не может найти data.dat
, для этого случая мне нужно изменить предыдущую строку на:
ifstream f("../mytool/data.txt");
, но я не могу знать, где другие людинапример, mytool
они могут иметь другое дерево каталогов:
project
| - program1
| - main1.cpp
| - mytool
| - tool1.h
| - tool2.cpp
| - data.dat
Кроме того (я прав?) путь зависит от того, где программа выполняется.
Единственное решениеЯ могу себе представить, это передать классу-конструктору MyTool
путь data.dat
, но я хочу скрыть этот файл для пользователя.