Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用gnu autotool构建qt项目_C++_Qt_Makefile - Fatal编程技术网

C++ 如何使用gnu autotool构建qt项目

C++ 如何使用gnu autotool构建qt项目,c++,qt,makefile,C++,Qt,Makefile,已解决 我最终使用以下设置编译程序。 我是autotool的新手,我想通过autotool构建一个qt项目。 项目结构 根/引导 root/configure.ac root/Makefile.am 根/src/ ----root/src/firsttry.cpp ----root/src/firsttry.h ----root/src/Makefile.am root/src/firsttry.cpp #include <QApplication> #include &l

已解决
我最终使用以下设置编译程序。


我是autotool的新手,我想通过autotool构建一个qt项目。


项目结构
根/引导
root/configure.ac
root/Makefile.am
根/src/
----root/src/firsttry.cpp
----root/src/firsttry.h
----root/src/Makefile.am

root/src/firsttry.cpp

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[]) {
     QApplication app(argc, argv);

     QLabel *label = new QLabel("Hello!World! Orz...");
     label->setWindowTitle("First Qt!");
     label->resize(200, 50);
     label->show();

     return app.exec();
}
root/configure.ac

在configure.ac文件中添加

# Check for Qt libraries
PKG_CHECK_MODULES(QT, [QtCore, QtGui, QtNetwork], [], [AC_MSG_ERROR([Qt libraries are required.])])

# Retrieve Qt compilation and linker flags
CPPFLAGS="`$PKG_CONFIG --cflags-only-I QtCore QtGui QtNetwork` $CPPFLAGS"
LDFLAGS="`$PKG_CONFIG --libs-only-L QtCore QtGui QtNetwork` $LDFLAGS"
LIBS="`$PKG_CONFIG --libs-only-l QtCore QtGui QtNetwork` $LIBS"

if ! `$PKG_CONFIG --atleast-version=4.6.0 QtCore`; then
   AC_MSG_ERROR([Qt >= 4.6.0 is required.])
fi

AC_CHECK_PROGS(MOC, [moc-qt5 moc-qt4 moc])
AC_CHECK_PROGS(UIC, [uic-qt5 uic-qt4 uic])
AC_CHECK_PROGS(RCC, [rcc])
 if test -z "$MOC" || test -z "$UIC" || test -z "$RCC"; then
   AC_MSG_ERROR([Qt utility programs moc, uic, and rcc are required.])
fi
我根据这些参考资料制作了这个项目。

我有问题
我编译程序时得到的
未定义。

有谁能给我一个循序渐进的教程吗?
pkg config不是最好的工具,Qt5有一个contrib M4宏+

然后在Makefile.am中:

QT_CXXFLAGS = @QT_CXXFLAGS@
QT_LIBS     = @QT_LIBS@
MOC         = @QT_MOC@
UIC         = @QT_UIC@
RCC         = @QT_RCC@

.hpp_moc.cpp:
    $(MOC) -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(QT_CXXFLAGS) $<

ui_qprojectm_mainwindow.h: qprojectm_mainwindow.ui
    $(UIC) -o $@ $<

ui_qpreseteditordialog.h: qpreseteditordialog.ui
    $(UIC) -o $@ $<

ui_qprojectmconfigdialog.h: qprojectmconfigdialog.ui
    $(UIC) -o $@ $<

application_qrc.cpp: application.qrc
    $(RCC) -o $@ $<
QT_cxflags=@QT_cxflags@
QT_LIBS=@QT_LIBS@
MOC=@QT\u MOC@
UIC=@QT_UIC@
RCC=@QT\u RCC@
.hpp_moc.cpp:
$(MOC)-o$@$(DEFS)$(默认值包括)$(包括)$(CPPFLAGS)$(QT\U CXXFLAGS)$<
ui_projectm_mainwindow.h:qprojectm_mainwindow.ui
$(UIC)-o$@$<
ui\u qpreseteditordialog.h:qpreseteditordialog.ui
$(UIC)-o$@$<
uiqprojectmconfigdialog.h:qprojectmconfigdialog.ui
$(UIC)-o$@$<
application\u qrc.cpp:application.qrc
$(RCC)-o$@$<

并将
$(QT\u cxflags)
添加到
CFLAGS
中,将
$(QT\u LIBS)
添加到
LDFLAGS

对于这一点,pkg配置不是最好的工具,Qt5有一个contrib M4宏+

然后在Makefile.am中:

QT_CXXFLAGS = @QT_CXXFLAGS@
QT_LIBS     = @QT_LIBS@
MOC         = @QT_MOC@
UIC         = @QT_UIC@
RCC         = @QT_RCC@

.hpp_moc.cpp:
    $(MOC) -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(QT_CXXFLAGS) $<

ui_qprojectm_mainwindow.h: qprojectm_mainwindow.ui
    $(UIC) -o $@ $<

ui_qpreseteditordialog.h: qpreseteditordialog.ui
    $(UIC) -o $@ $<

ui_qprojectmconfigdialog.h: qprojectmconfigdialog.ui
    $(UIC) -o $@ $<

application_qrc.cpp: application.qrc
    $(RCC) -o $@ $<
QT_cxflags=@QT_cxflags@
QT_LIBS=@QT_LIBS@
MOC=@QT\u MOC@
UIC=@QT_UIC@
RCC=@QT\u RCC@
.hpp_moc.cpp:
$(MOC)-o$@$(DEFS)$(默认值包括)$(包括)$(CPPFLAGS)$(QT\U CXXFLAGS)$<
ui_projectm_mainwindow.h:qprojectm_mainwindow.ui
$(UIC)-o$@$<
ui\u qpreseteditordialog.h:qpreseteditordialog.ui
$(UIC)-o$@$<
uiqprojectmconfigdialog.h:qprojectmconfigdialog.ui
$(UIC)-o$@$<
application\u qrc.cpp:application.qrc
$(RCC)-o$@$<

并将
$(QT\u cxflags)
添加到
CFLAGS
中,将
$(QT\u LIBS)
添加到
LDFLAGS

中,为什么不使用通用的QT构建过程qmake-make?不要忘了添加到.pro文件<代码> Qt++Cudio Gui>代码>无论如何,检查QueLoad对于链接器可用的构建配置(-L/PATH)和添加(-LQTGUI)来编译命令。在2016中,我将考虑使用CuScript或QGuy而不是学习AutoToots…NOP抱歉。我只做了这个没有UI的项目(它是由管理的webUI)。覆盖那些标志是错误的。在
AC\u SUBST
中使用类似于
QT\u CPPFLAGS
的内容,并在
Makefile.am
中使用该变量。为什么不使用常规QT构建过程qmake-make?不要忘了添加到.pro文件<代码> Qt++Cudio Gui>代码>无论如何,检查QueLoad对于链接器可用的构建配置(-L/PATH)和添加(-LQTGUI)来编译命令。在2016中,我将考虑使用CuScript或QGuy而不是学习AutoToots…NOP抱歉。我只做了这个没有UI的项目(它是由管理的webUI)。覆盖那些标志是错误的。在
AC\u SUBST
中使用类似于
QT\u CPPFLAGS
的内容,并在
Makefile.am
中使用该变量。