Hello all, the only idea at this time is to add another subproject and put the special test forms in there...
I must copy some other source files or use in XXX_SOURCES = ../src/files.cpp (ugly??) The build order can modified via SUBDIRS in the toplevel Makefile.am... Greetings andre Am Donnerstag, 29. Oktober 2009 15:02 schrieb Andre Heine: > Hello all, > > I've a litte problem to build subproject correctly... > > In my Makefile.am are one "bin_programs" and one "lib_LTLIBRARIES". > > The plugin is a shared linked library, so that it can loaded into QT's > designer. The program should test all plugin widgets, features etc... > > "bin_programs" has some UI files more, that UI's needed the plugin (.so) > > All other source and header files are shared, so all files are in one > directory... > > And that is the problem, the "uic" needs the plugin to load at runtime. The > "uic" will load the plugin via dlopen, so I must build the lib first. > > In my Makefile.am I call the "uic" with an extra switch (-L) to add the > libpath to my shared object: > > $(UIC) -L $(top_builddir)/dvplugins/.libs > > The "uic" will load the lib and generate some include defines into the qt > class files. But when uic can't load the plugin my header is broken;() > > Our source are bad organized, because there some file with ".hpp" and some > with ".h". So I must add some extra suffix rules... > > When I call "make libCustomPlugin.la && make qplugin" all things works > correctly. > > "make all" can't build the project... > > I had gamble a little with "BUILT_SOURCES", but I can't resolve > the "cycles"... > > > Any hints? > > > Best regards > > Andre > > > System: SuSE 10.2 > autoconf-2.60-21 > automake-1.9.6-35 > > ------------------------ Makefile.am ----------------- > AUTOMAKE_OPTIONS = foreign 1.4 gnu > > INCLUDES = -I$(top_srcdir)/. -I$(top_srcdir)/src -I$(QTDIR)/include \ > -I$(QTDIR)/mkspecs/linux-g++ -I$(top_srcdir)/../libdvutil/include \ > -I$(top_srcdir)/../libsettings/include/ -I. > > MOC = $(QTDIR)/bin/moc > UIC = $(QTDIR)/bin/uic > > # global DV > ISAMFLAGS = -DREALLY_DB_ONLY -DITOOLS -DDB_ONLY -DLATIN1KONV > -DDVPLUGINS -DDAVIDX > > bin_PROGRAMS = qplugin > lib_LTLIBRARIES = libCustomPlugin.la > > DVHEADER = > DVSOURCE = > DVXSOURCE = > DVXHEADER = > > # only qplugin, it got the dynamic widgets from the plugin > FORMS_TEST = Test.ui dialogimplform.ui > > # all > FORMS = dialogbase.ui > FORMS_HPP = consdatum_dlg.ui adt_wizard.ui > > > MOC_HEADERS = DialogImpl.h \ > messagebox.hpp \ > lineedit.hpp \ > consdatum_dlg_impl.hpp \ > datum_le.hpp > > SHARED_SRC = messagebox.cpp DialogImpl.cpp \ > lineedit.cpp \ > isam2x_str.cpp \ > x2isam_str.cpp \ > setwindow.cpp \ > custom_event.cpp \ > consdatum_dlg_impl.cpp \ > datum_le.cpp > > SHARED_INC = isam2x_str.hpp \ > x2isam_str.hpp \ > setwindow.hpp \ > custom_event.hpp > > > qplugindir = $(prefix)/include > qplugin_SOURCES = $(SHARED_SRC)\ > qplugin.cpp > > qplugin_HEADERS = $(SHARED_INC) $(MOC_HEADERS) > > > MOCdir = $(prefix)/include > FORMHEADERS = $(FORMS:.ui=.h) $(FORMS_HPP:.ui=.hpp) > MOC_CC = $(FORMS:.ui=.moc.cpp) $(MOC_HEADERS:.h=.moc.cpp) \ > $(MOC_HEADERS:.hpp=.moc.cpp) $(FORMS_HPP:.ui=.moc.cpp) > > MOC_CC_QP = $(FORMS_TEST:.ui=.moc.cpp) > UIC_CC_QP = $(FORMS_TEST:.ui=.uic.cpp) > > UIC_CC = $(FORMS:.ui=.uic.cpp) > UIC_CXX = $(FORMS_HPP:.ui=.uic.cxx) > > nodist_qplugin_SOURCES = $(UIC_CC) $(MOC_CC) $(UIC_CXX) $(MOC_CC_QP) > $(UIC_CC_QP) > > > qplugin_LDFLAGS = $(all_libraries) > $(SUBLIBS) -L$(QTDIR)/lib -L/usr/X11R6/lib -lqt-mt \ > -lqui -lXext -lX11 -lm -lpthread \ > -ldvutil $(top_builddir)/src/libISAMCore.la \ > $(BOOST_ROOT)/lib/libboost_regex.a \ > -export-dynamic > # $(DVSTATICS_ROOT)/lib/libsettings.a > > qplugin_LDADD = > qplugin_CPPFLAGS = $(ISAMFLAGS) > qplugin_CFLAGS > = -pipe -Wall -Wno-write-strings -Wno-parentheses -Werror -O2 \ > -D_REENTRANT -DQT_THREAD_SUPPORT -DQT_SHARED > > qplugin_CXXFLAGS > = -pipe -Wall -Wno-write-strings -Wno-parentheses -Werror -O2 \ > -D_REENTRANT -DQT_THREAD_SUPPORT -DQT_SHARED > > > > # This line ensures that generated moc_*.cpp and resources.cpp files are > # deleted when we make clean. > # CLEANFILES = $(filter moc_%.cpp, $(qplugin_SOURCES)) > > # This is to ensure the myapp.h file is distributed in your > myapp-0.1.tar.gz # I also have a resources.qrc I need to include. The png > is used in myapp. > > > libCustomPlugin_ladir = $(exec_prefix)/include > #libCustomPlugin_la_MOCdir = $(exec_prefix)/include > libCustomPlugin_la_SOURCES = $(SHARED_SRC) CustomPlugin.cpp > #dialogbase.moc.cpp dialogbase.uic.cpp > #libCustomPlugin_la_MOC_HEADERS = DialogImpl.h > libCustomPlugin_la_HEADERS = $(SHARED_INC) $(MOC_HEADERS) CustomPlugin.h > # dialogbase.h > > nodist_libCustomPlugin_la_SOURCES = $(UIC_CC) $(MOC_CC) $(UIC_CXX) > > libCustomPlugin_la_CFLAGS > = -pipe -Wall -Wno-pointer-sign -Wno-parentheses -Werror -O2 \ > -D_REENTRANT -DQT_THREAD_SUPPORT -DQT_SHARED > libCustomPlugin_la_CXXFLAGS > = -pipe -Wall -Wno-write-strings -Wno-parentheses -Werror -O2 \ > -D_REENTRANT -DQT_THREAD_SUPPORT -DQT_SHARED > > #-Wl,-soname,libcustomplugin.so.0 > -Wl,-rpath,/home/ahe/david/plugins/widgets > > libCustomPlugin_la_CPPFLAGS = $(ISAMFLAGS) > libCustomPlugin_la_LDFLAGS = $(all_libraries) > $(SUBLIBS) -L$(QTDIR)/lib -L/usr/X11R6/lib -lqt-mt -lqui -lXext -lX11 -lm > -lpthread \ > -ldvutil $(top_builddir)/src/libISAMCore.la > $(BOOST_ROOT)/lib/libboost_regex.a \ > -lsettings \ > -module -release 1.0 -version-info 1:1:0 -shared > # -export-dynamic -rdynamic > # -Wl,-rpath,'$$ORIGIN' > > libCustomPlugin_la_LIBADD = -lfbn > > # QT specialslibCustomPlugin_la_HEADERSlibCustomPlugin_la_HEADERS > noinst_HEADERS = $(MOC_HEADERS) $(qplugin_HEADERS) > $(libCustomPlugin_la_HEADERS) > BUILT_SOURCES = $(FORMHEADERS) $(UIC_CC) $(MOC_CC) $(UIC_CXX) \ > $(FORMS_TEST:.ui=.h) $(MOC_CC_QP) $(UIC_CC_QP) > EXTRA_DIST = $(nodist_qplugin_SOURCES:moc_%.cpp=%.h) $(FORMS) > $(FORMS_HPP) > \ $(nodist_libCustomPlugin_la_SOURCES:moc_%.cpp=%.h) CLEANFILES > = > $(BUILT_SOURCES) > > > #echo "@($@) *($*) <($<) %($%)" > # echo "cpp@($@) *($*) <($<) %($%) NO("$(nodist_qplugin_SOURCES)")" > .ui.h: $(FORMS) > $(UIC) -L $(top_builddir)/dvplugins/.libs -o $@ $< > > .ui.hpp: $(FORMS_HPP) > $(UIC) -o $@ $< > > .h.moc.cpp: > $(MOC) -o $@ $< > > .hpp.moc.cpp: > $(MOC) -o $@ $< > > # $(FORMS:.ui=.h) $(FORMS_HPP:.ui=.hpp) > > .ui.uic.cpp: $(FORMS) > $(UIC) -o $@ -impl $*.h $(<:.h=.ui) > > .ui.uic.cxx: $(FORMS_HPP) > $(UIC) -o $@ -impl $*.hpp $(<:.hpp=.ui) > > SUFFIXES = .h .ui .moc.cpp .uic.cpp .hpp .uic.cxx -- Concept, n.: Any "idea" for which an outside consultant billed you more than $25,000.