c++ - QT make 在构建时有大量输出

标签 c++ qt gcc makefile

我正在编译一个QT项目。我运行 qmake 和 make 进行编译。

每次它编译一个 cpp 时都会有大约 20 行的详细输出。

当我只更改一行并 make 时,一次更改将输出 20 行。

这个输出到底是什么,有没有办法限制它?

以下输出来自更改一行并编译单个 cpp。

g++ -c -g -Wextra -std=c++0x -DGLOGG_DATE=\"`date +"%F"`\" -DGLOGG_VERSION=\"`git describe`\" -DGLOGG_COMMIT=\"`git rev-parse --short HEAD`\" -DGLOGG_SUPPORTS_INOTIFY -O2 -Wall -W -D_REENTRANT -fPIC -DFILELOG_MAX_LEVEL="logDEBUG" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -Isrc -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I.moc/release-shared -I.ui/release-shared -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o .obj/release-shared/filterset.o src/filterset.cpp
g++ -m64 -Wl,-O1 -o release/glogg .obj/release-shared/main.o .obj/release-shared/session.o .obj/release-shared/abstractlogdata.o .obj/release-shared/logdata.o .obj/release-shared/logfiltereddata.o .obj/release-shared/logfiltereddataworkerthread.o .obj/release-shared/logdataworkerthread.o .obj/release-shared/compressedlinestorage.o .obj/release-shared/mainwindow.o .obj/release-shared/crawlerwidget.o .obj/release-shared/abstractlogview.o .obj/release-shared/logmainview.o .obj/release-shared/filteredview.o .obj/release-shared/optionsdialog.o .obj/release-shared/persistentinfo.o .obj/release-shared/configuration.o .obj/release-shared/filtersdialog.o .obj/release-shared/filterset.o .obj/release-shared/savedsearches.o .obj/release-shared/infoline.o .obj/release-shared/menuactiontooltipbehavior.o .obj/release-shared/selection.o .obj/release-shared/quickfind.o .obj/release-shared/quickfindpattern.o .obj/release-shared/quickfindwidget.o .obj/release-shared/sessioninfo.o .obj/release-shared/recentfiles.o .obj/release-shared/overview.o .obj/release-shared/overviewwidget.o .obj/release-shared/marks.o .obj/release-shared/quickfindmux.o .obj/release-shared/signalmux.o .obj/release-shared/tabbedcrawlerwidget.o .obj/release-shared/viewtools.o .obj/release-shared/encodingspeculator.o .obj/release-shared/gloggapp.o .obj/release-shared/platformfilewatcher.o .obj/release-shared/inotifywatchtowerdriver.o .obj/release-shared/watchtower.o .obj/release-shared/watchtowerlist.o .obj/release-shared/qrc_glogg.o .obj/release-shared/moc_abstractlogdata.o .obj/release-shared/moc_logdata.o .obj/release-shared/moc_logfiltereddata.o .obj/release-shared/moc_logfiltereddataworkerthread.o .obj/release-shared/moc_logdataworkerthread.o .obj/release-shared/moc_mainwindow.o .obj/release-shared/moc_crawlerwidget.o .obj/release-shared/moc_abstractlogview.o .obj/release-shared/moc_optionsdialog.o .obj/release-shared/moc_filtersdialog.o .obj/release-shared/moc_filewatcher.o .obj/release-shared/moc_quickfind.o .obj/release-shared/moc_quickfindpattern.o .obj/release-shared/moc_quickfindwidget.o .obj/release-shared/moc_menuactiontooltipbehavior.o .obj/release-shared/moc_overviewwidget.o .obj/release-shared/moc_quickfindmux.o .obj/release-shared/moc_tabbedcrawlerwidget.o .obj/release-shared/moc_externalcom.o .obj/release-shared/moc_viewtools.o .obj/release-shared/moc_gloggapp.o .obj/release-shared/moc_platformfilewatcher.o   -L/usr/X11R6/lib64 -lboost_program_options -lQt5Widgets -lQt5Gui -lQt5Network -lQt5Core -lGL -lpthread 

最佳答案

运行 make 时的输出是为编译项目而执行的命令。

如果您想删除这些输出,您可以在 .pro 文件中或调用 qmake 时使用 CONFIG+=silent:

qmake CONFIG+=silent myproject.pro
make

这样做会产生较短的输出,例如

compiling file1.cpp 
compiling file2.cpp
linking app.exe

具体来说,当您更改 cpp 文件时,您应该会在输出中看到 2 行。一个用于将您的 cpp 文件编译成目标文件的命令,一个用于将新目标文件(以及未更改的目标文件)链接到新的可执行文件的命令。这正是您粘贴的输出。如果您删除所有选项,您最终会得到:

g++ -c -o .obj/release-shared/filterset.o src/filterset.cpp
g++ -o release/glogg <list of object files>

您可以将其视为更多行,因为您正在使用的控制台在很多行上换行时太长。

此外,如果您编辑 .h 文件,则通常会有更多文件需要重新编译,因为所有直接或间接包含已更改 .h 文件的 cpp 文件都必须重新编译。由于您使用的是 Qt,如果您更改 QObject 派生类的 .h 文件,您将执行 2 个额外的命令:一个用于生成 moc.cpp 文件,另一个用于编译 moc.cpp 文件。

关于c++ - QT make 在构建时有大量输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46985261/

相关文章:

c++ - Windows 客户端应用程序使用 GSSAPI/Kerberos API 通过 KDC 进行身份验证

c++ - 如何使用 std::bind?

c++ - 如果在 Qt 中使用国际化,则翻译 "dynamic"内容

c++ - 使用Qt编译测试程序时出错

c++ - 大整数隐式截断为无符号类型

c - mac osx 优胜美地 gcc 无法执行二进制文件,找不到命令

c++ - Qt中如何使用QSerialDevice?

c++ - 在for循环中生成随机 float

python - PyQt 通用科学软件模式 : Tree and Settings Box

linux - 如何配置 makefile?