2012-04-28 6 views
2

Я начинаю разработку инструмента анализа акустического спектра (вдохновленный spek), написанный на C++ с gtkmm (привязки C++ для инструментария GTK + GUI). Я предположил бы, что я должен знать, как сделать это сейчас, однако ...Использование нелокальных файлов данных/медиафайлов с применением C++ (gtkmm)

Моя структура каталогов а-ля-GNOME, например src/, data/, po/, man/. Конкретной ситуацией, которая показала необходимость моего запроса, является использование диспетчера интерфейса GTK, который будет расположен в data/ui. В этой конкретной ситуации я хочу иметь возможность загружать пользовательский интерфейс из этого файла независимо от установки (например, загрузка файла не зависит от make install, исполняемый файл может быть запущен [и загружен файл UI] либо от src/ после запуска make [таким образом, скомпилировав исходные тексты в том же самом exectuable], либо из его установочного префикса). Как я могу ссылаться на файл пользовательского интерфейса в моем исходном коде (имея в виду, что загрузка файла не выполняется путем создания файла-объекта (fopen(...)), а путем передачи местоположения файла в виде строкового аргумента в (UIManager).add_ui_from_file(...))?

В дополнение к этой конкретной ситуации файла пользовательского интерфейса, как бы я сделал похожие ссылки на файлы (например, базы данных, файлы INI, схемы XML), используя процесс сборки autotools? Есть ли часть соответствующего кода Automake для быстрой настройки проекта для использования этого типа структуры каталогов?

ответ

1

просто пытаются использовать оба файла (с не-устанавливаться с старшинства):

if(!(UIManager).add_ui_from_file(../data/ui/mygui)) 
    (UIManager).add_ui_from_file(/incalled/location/mygui) 
+0

Вы не должны быть местами жесткого кодирования в коде. – murrayc

0

В завесе, я создал вспомогательную функцию, которая пытается оба места, с обоих местах определяется в Makefile.am (это проще, если у вас есть только один Makefile.am, используя нерекурсивный automake, который в любом случае проще): http://git.gnome.org/browse/glom/tree/glom/glade_utils.h#n38

 Смежные вопросы

  • Нет связанных вопросов^_^