Closed ioctl-user closed 4 years ago
Не знаю, как отключить автоформатирование.
А pkg-config --cflags cairomm-1.0
срабатывает?
А в modules/cairo/Makefile.deps тоже нет PKG_CONFIG ? (каждый модуль можно отдельно компилить и отлаживать, чтобы не начинать с programs/ms2conv)
Что в этой директории (modules/cairo) говорит
../get_deps .. .
Заметил, что если любой другой библиотеки, например, gtkmm-3.0
, то pkg-config не отработает и сборка упадет тоже на #include <cairomm/context.h>
Но у меня при этом get_deps отрабатывает и PKG_CONFIG в Makefile.deps появляется... И сообщение об ошибке от pkg-config тоже есть с правильным указанием, чего не хватает.
отключить автоформатирование можно, если весь текст заключить в тройные кавычки
код
$ pkg-config --cflags cairomm-1.0
-I/usr/include/cairomm-1.0 -I/usr/lib/cairomm-1.0/include -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/libffi-3.2.1/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include
$ ../get_deps .. .
### This file is generated by get_deps program.
# 1. module source dependencies (recoursive h-file includes):
cairo_wrapper.o: ../geom/line.h ./cairo_wrapper.h ../geom/point.h ../geom/rect.h ../image/image.h ../geom/multiline.h ../opt/opt.h ../err/err.h
cairo1.test.o: ../geom/point.h ../err/assert_err.h ../err/err.h ../opt/opt.h ../geom/rect.h ../geom/line.h ./cairo_wrapper.h ../image/image.h ../geom/multiline.h
# 2. sorted module dependencies
MDEPS := err opt geom getopt filename cache image
# 3. a-file list for linking (reverse order)
ADEPS := ../image/image.a ../cache/cache.a ../filename/filename.a ../getopt/getopt.a ../geom/geom.a ../opt/opt.a ../err/err.a
# 4. library dependencies
LDLIBS :=
PKG_CONFIG := libtiff-4 libpng libgif gtkmm-3.0 fontconfig cairomm-ft-1.0 cairomm-1.0 libjpeg jansson
Видимо, проблема была в том, что я удалял папку modules/tmpdir/ для продолжения сборки. После исправления в tmpdir собрался и ms2conv.
Общая идея такая:
Я использую эти самые модули в разных программах, не только в mapsoft2. Про этом удобно хранить их в отдельном репозитории и подключать в виде git submodules. Если я что-то меняю, то все коммитится в правильное место.
Сборочная система устроена так:
Сборка в Альтлинукс (а конкретно, программа gear) принципиально не поддерживает git submodules, поскольку хочет, чтобы все, необходимое для воспроизводимой сборки содержалось в одном коммите. Чтобы это обойти, перед сборкой новой версии модули пакуются в modules.tar (тоже, кстати, с использованием gear) и коммитятся.
Еще есть такой текст: https://slazav.github.io/mapsoft2/modules.ru.htm https://slazav.github.io/mapsoft2/modules.htm
Ошибка выглядит так: $ make make -C programs/ms2conv make[1]: вход в каталог «/home/ioctl/delme/mapsoft2/programs/ms2conv» Can't find file "tmpdir/tmpdir.h" included in "geo_io.cpp"
Building dependencies: []
Finish building dependencies
g++ -std=gnu++11 -Werror=return-type -O2 -fPIC -I../../modules -c -o ms2conv.o ms2conv.cpp In file included from ../../modules/viewer/gobj.h:6, from ../../modules/geo_render/write_geoimg.h:8, from ms2conv.cpp:10: ../../modules/cairo/cairo_wrapper.h:4:10: фатальная ошибка: cairomm/context.h: Нет такого файла или каталога 4 | #include <cairomm/context.h> | ^
~~~~~~ компиляция прервана. make[1]: [<встроенное>: ms2conv.o] Ошибка 1 make[1]: выход из каталога «/home/ioctl/delme/mapsoft2/programs/ms2conv» make: [Makefile:20: ms2conv] Ошибка 2Это потому, что переменная PKG_CONFIG пустая (что влияет на создание CXXFLAGS посредством запуска pkg-config). В файле programs/ms2conv/Makefile.deps только следующее содержимое:
This file is generated by get_deps program.
1. module source dependencies (recoursive h-file includes):
ms2conv.o: ../../modules/cache/cache.h ../../modules/geo_data/geo_io.h ../../modules/conv/conv_multi.h ../../modules/geom/multiline.h ../../modules/geo_render/gobj_trk.h ../../modules/err/err.h ../../modules/geo_data/filters.h ../../modules/geom/line.h ../../modules/image/image.h ../../modules/geo_render/write_geoimg.h ../../modules/geom/point.h ../../modules/cairo/cairo_wrapper.h ../../modules/conv/conv_base.h ../../modules/image/image_io.h ../../modules/geo_render/gobj_maps.h ../../modules/image/image_colors.h ../../modules/viewer/gobj_multi.h ../../modules/geo_data/conv_geo.h ../../modules/geo_render/gobj_wpts.h ../../modules/viewer/gobj.h ../../modules/geo_data/geo_data.h ../../modules/geom/rect.h ../../modules/image/image_cache.h ../../modules/opt/opt.h ../../modules/getopt/getopt.h ../../modules/conv/conv_aff.h ../../modules/geo_mkref/geo_mkref.h