cmake -DMARBLE_INCLUDE_DIR broken?

Gaetan Bisson bisson at archlinux.org
Wed Sep 23 17:58:43 PDT 2015


Hi,

I've just built and installed today's git snapshot of our marble branch.
Now I'm trying to build today's git snapshot of subsurface against it.
However, invoking cmake as:

	cmake \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DMARBLE_INCLUDE_DIR='/usr/include/subsurface' \
		-DUSE_LIBGIT23_API=1 \
		.

Gives me:

	[ 80%] Building CXX object CMakeFiles/subsurface_interface.dir/qt-ui/globe.cpp.o
	In file included from /build/subsurface-git/src/subsurface/qt-ui/globe.cpp:1:0:
	/build/subsurface-git/src/subsurface/qt-ui/globe.h:7:33: fatal error: marble/MarbleWidget.h: No such file or directory
	compilation terminated.
	CMakeFiles/subsurface_interface.dir/build.make:230: recipe for target 'CMakeFiles/subsurface_interface.dir/qt-ui/globe.cpp.o' failed
	make[2]: *** [CMakeFiles/subsurface_interface.dir/qt-ui/globe.cpp.o] Error 1

But the file /usr/include/subsurface/marble/MarbleWidget.h is actually
there, so it seems the -DMARBLE_INCLUDE_DIR option does not get passed
on to whatever compiles globe.cpp.

Hum. And when I replace:

	#include <marble/...

by

	#include <subsurface/marble/...

in every file under qt-ui, linking fails with:

	[100%] Linking CXX executable subsurface
	libsubsurface_interface.a(subsurface_interface_automoc.cpp.o): In function `GlobeGPS::qt_metacall(QMetaObject::Call, int, void**)':
	/build/subsurface-git/src/subsurface/moc_globe.cpp:161: undefined reference to `Marble::MarbleWidget::qt_metacall(QMetaObject::Call, int, void**)'
	libsubsurface_interface.a(subsurface_interface_automoc.cpp.o): In function `GlobeGPS::qt_metacast(char const*)':
	/build/subsurface-git/src/subsurface/moc_globe.cpp:156: undefined reference to `Marble::MarbleWidget::qt_metacast(char const*)'
	libsubsurface_interface.a(subsurface_interface_automoc.cpp.o): In function `GlobeGPS::~GlobeGPS()':
	/build/subsurface-git/src/subsurface/qt-ui/globe.h:20: undefined reference to `Marble::MarbleWidget::~MarbleWidget()'
	libsubsurface_interface.a(subsurface_interface_automoc.cpp.o): In function `GlobeGPS::~GlobeGPS()':
	/build/subsurface-git/src/subsurface/qt-ui/globe.h:20: undefined reference to `Marble::MarbleWidget::~MarbleWidget()'
	libsubsurface_interface.a(subsurface_interface_automoc.cpp.o):(.data.rel.ro._ZTI8GlobeGPS[_ZTI8GlobeGPS]+0x10): undefined reference to `typeinfo for Marble::MarbleWidget'
	...

Any help is welcome.

-- 
Gaetan


More information about the subsurface mailing list