Qt Automake将include,ui,资源文件夹分开

时间:2016-04-08 12:44:10

标签: c++ qt autotools automake

基于this link,我创建了一个基于Autotools的构建系统,可以接受Qt UI和RSC文件而无需调用QMAKE。

我希望以下列方式将源,标题和ui文件分隔到文件夹中:

${srcdir}
├── Makefile.am
├── main.cc
├── include
│   └── mainwidget.h
├── src
│   └── mainwidget.cc
└── ui
    └── mainwidget.ui

并按以下方式排序构建目录

${builddir}
├── include
│   └── ui_mainwidget.h
├── Makefile
├── main.o
├── mainwidget.o
└── moc_mainwidget.o

我的Makefile.am目前看起来像这样:

moc_%.cc: %.h
    @MOC@ -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(MOC_CPPFLAGS) $<

ui_%.h: %.ui
    @UIC@ -o $@ $<

qrc_%.cc: %.qrc
    @RCC@ -o $@ $<

bin_PROGRAMS = qthello
BUILT_SOURCES = ui_mainwidget.h

qthello_CXXFLAGS = -I$(srcdir)/include -I$(builddir)/include
qthello_CPPFLAGS = $(QT_CPPFLAGS)

qthello_LDFLAGS = $(QT_LDFLAGS)
qthello_LDADD = $(QT_LIBS)

qthello_SOURCES =       \
    moc_mainwidget.cc   \
    mainwidget.cc       \
    main.cc

如果ui-class文件位于$(srcdir)中,但只是将它们移动到所需的目录并更改Makefile.am中的预期行,这样可以正常工作。也就是说,进行这些更改不起作用:

BUILT_SOURCES = include/ui_mainwidget.h
[ ... ]
qthello_SOURCES =           \
    src/moc_mainwidget.cc   \
    src/mainwidget.cc       \
    main.cc

我发现必须对构建规则进行一些更改,以确保$(builddir)中存在include,src,ui -director,并传递正确的输入文件。然而,我在编写这样的构建规则方面缺乏经验,谷歌似乎没有答案。

有没有简单易用的方法来实现这一目标?

0 个答案:

没有答案