И ваши параметры makefile должны быть вставлены в ваши строки компиляции

ользую DBI и DBD :: SQLite, и теперь я хотел бы использовать функцию R * Tree в SQLite. Поскольку эта функция не компилируется DBD :: SQLite по умолчанию, я должен добавить-DSQLITE_ENABLE_RTREE=1 к@CC_DEFINE переменная в DBD :: SQLite's Makefile.PL. Если я выполняю 'perl Makefile.PL && make && make install', все работает локально на моем компьютере, но в конечном итоге это должно быть развертываемым / распространяемым для конечных пользователей.

Что мне делать в таком случае? Должен ли я скопировать источник, grep источник и создать DBD :: SQLite :: WithRTree? Создать приватную версию DBD :: SQLite 1.31.1 (где 1.31 - текущая версия DBD :: SQLite)? Возможно, лучший способ вообще?

Все остальные дистрибутивы в проекте развертываются / распространяются через закрытое CPAN :: Mini mirror + CPAN :: Mini :: Inject.

Ответы на вопрос(3)

Решение Вопроса

-DSQLITE_ENABLE_RTREE = 1' к переменной @CC_DEFINE в DBD :: SQLite's Makefile.PL

Вы делаете это неправильно,perl Makefile.PL DEFINE='-DSQLITE_ENABLE_RTREE=1' работает. Это задокументировано вExtUtils :: MakeMaker, Теперь, когда вы это знаете, простое решение, включающееDistroprefs скорее всего упадет на место.

Ты можешь сделать это:

cpan
o conf makepl_arg "DEFINE='-DSQLITE_ENABLE_RTREE=1'"
o conf commit

Затем CPAN навсегда добавит этот DEFINE в начало всех ваших вызовов Makefile.PL.

Так чтодолжен просто будь

cpan DBD::SQLite

И ваши параметры makefile должны быть вставлены в ваши строки компиляции

ную директорию (без изменения имен модулей) и используюuse lib qw(the/special/directory) или настройка$PERL5LIB для сценариев, которые должны использовать расширенный модуль.

Изменение имени модуля также сделало бы эту работу, но это звучит как гораздо больше работы для создания и тестирования.

 justintime12 янв. 2011 г., 02:55
И ведение тщательного учета того, что вы изменили

Ваш ответ на вопрос