Независимый от платформы способ сделать это с помощью Autotools
использует переменную $(datadir)
, чтобы найти каталог системных данных и работать с ним.
Таким образом, в вашем файле Makefile.am
вы можете создать имя, подобное этому:
myprog_infodir = $(datadir)/myprog
# Set a macro for your code to use
myprog_CXXFLAGS = -DDATA_LOCATION=\"$(datadir)/myprog\"
# This will install it from the development directories
myprog_info_DATA = $(top_srcdir)/DataFiles/File.dat $(top_srcdir)/DataFiles/File1.dat
# make sure it gets in the installation package
extra_DIST = $(top_srcdir)/DataFiles/File.dat $(top_srcdir)/DataFiles/File1.dat
Тогда в вашей программе вы сможете ссылаться на такие данные:
std::ifstream ifs(DATA_LOCATION "/File.dat");
Отказ от ответственности: Не проверено код