Под катом пример MxxRu::externals-скрипта, посредством которого подтягиваются почти все зависимости для одного из текущих проектов. Почти все потому, что Boost таким образом не подцепишь (пока по крайней мере не пробовали).
В дополнение к тем соображениям по поводу будущих доработок в MxxRu::externals, которые были изложены здесь, добавилась еще одна идея: нужно иметь разные списки externals-ов для разных кусков проекта. Например, делаю библиотеку libX. Для нее нужны spdlog и tinyformat. Посему желательно, чтобы эти зависимости подхватывались автоматически всеми, кто берет libX к себе. Для тестов библиотеки libX нужен Catch. Поэтому Catch должен относиться к зависимостями libX-tests. И нужен Catch будет только тем, кто хочет гонять тесты для libX. Для примеров библиотеки libX может быть нужен rapidjson. Посему rapidjson должен быть в externals-ах libX-samples, но его не должно быть в externals-ах самой библиотеки libX.
В общем, есть над чем покурить.
Ну а пока пример того, что сейчас используется в повседневной работе:
gem 'Mxx_ru', '>= 1.6.9' require 'mxx_ru/externals' MxxRu::arch_externals :libmosquitto do |e| e.url 'http://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz' e.map_dir 'lib' => 'dev/libmosquitto' e.map_file 'config.h' => 'dev/libmosquitto/*' end MxxRu::hg_externals :libmosquitto_mxxru do |e| e.url 'https://---censored---/libmosquitto_mxxru_1.0' e.map_file 'dev/libmosquitto/prj.rb' => 'dev/libmosquitto/*' end MxxRu::arch_externals :tinyformat do |e| e.url 'https://github.com/c42f/tinyformat/archive/Release-2.0.1.tar.gz' e.map_file 'tinyformat.h' => 'dev/tinyformat/*' end MxxRu::git_externals :spdlog do |e| e.url 'https://github.com/gabime/spdlog.git' e.commit 'a79a045' e.map_dir 'include' => 'dev/spdlog' end MxxRu::hg_externals :spdlog_mxxru do |e| e.url 'https://---censored---/spdlog_mxxru_1.0' e.tag '1.0.0' e.map_file 'dev/spdlog/prj.rb' => 'dev/spdlog/*' end MxxRu::svn_externals :so5 do |e| e.url 'http://svn.code.sf.net/p/sobjectizer/repo/tags/so_5/5.5.16' e.option '-q' e.option '--native-eol', 'LF' e.map_dir 'dev/so_5' => 'dev' end MxxRu::svn_externals :timertt do |e| e.url 'http://svn.code.sf.net/p/sobjectizer/repo/tags/timertt/1.1.1' e.option '-q' e.option '--native-eol', 'LF' e.map_dir 'dev/timertt' => 'dev' end MxxRu::arch_externals :catch do |e| e.url 'https://github.com/philsquared/Catch/archive/v1.3.0.tar.gz' e.map_file 'single_include/catch.hpp' => 'dev/catch/*' end |
Комментариев нет:
Отправить комментарий