[qt creator]qmake生成makefile

在arm板子上编译搭建qmake
https://blog.csdn.net/qq_41884002/article/details/116942605?tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1


1 基于qt creator生成makefile

基于qt creator中的qmake构建makefile后

进入终端,可以敲命令进行编译:

在ubuntu下安装qt creator后,使qmake等生效的,设置如下:

sudo gedit /etc/profiles
#willis add
export PATH="/home/tf/Qt5.8.0/5.8/gcc_64/bin:$PATH" 
export QIDIR=/home/tf/Qt5.8.0/5.8/gcc_64/
export MANPATH=/home/tf/Qt5.8.0/5.8/gcc_64/man/:$MANPATH
export LD_LIBRARY_PATH="/home/tf/Qt5.8.0/5.8/gcc_64/lib:$LD_LIBRARY_PATH" 

2 基于qmake生成makefile 

<1>第1步:先构建文件夹目录,如下:

include  :对外的头文件.h ,release时用
src         :cpp和私有的头文件.h
prj_linux:构建工程使用,包含pro和pri文件

<2>第2步:生成pro文件和pri文件 

cd prj_linux/
qmake -project ../ -o qtcpp.pro

这里生成的pro文件,包含了.h/.c/cpp等源文件,用在pri文件里

直接将pro文件重名成pri,删除其它定义

# Input
HEADERS += ../include/server/factory.hpp
SOURCES += ../src/server/factory.cpp


<3> 第3步: 手动新建pro文件,修改pro文件,将pri文件包含进来

pro文件模板如下:


TEMPLATE = app
TARGET = qtcpp

QMAKE_CXXFLAGS += -std=c++11 -O2

#去掉qt的依赖
#QT += core 
QT -= core gui

CONFIG += debug
#CONFIG += release

INCLUDEPATH += ./../include \

LIBS += \

#目标生成的目录
DESTDIR = ./../bin

#临时生成的目录
DEPENDPATH += .

CONFIG(debug, debug|release) {
    QMAKE_CXXFLAGS += -Wall -g 
    MOC_DIR     += ./build/debug/moc
    OBJECTS_DIR += ./build/debug/obj
    UI_DIR      += ./build/debug/ui
    RCC_DIR     += ./build/debug/rcc
} else {

    MOC_DIR     += ./build/release/moc
    OBJECTS_DIR += ./build/release/obj
    UI_DIR      += ./build/release/ui
    RCC_DIR     += ./build/release/rcc
}

include(../prj_linux/qtcpp.pri)

<4>第4步: 构建makefile进行编译
如果debug编译还是release编译,修改pro文件

CONFIG += debug
#CONFIG += release

all:qtcpp_build 

clean:qtcpp_clean 

qtcpp_build:
	cd ./prj_linux/ ; qmake .;
	$(MAKE) -C ./prj_linux;

qtcpp_clean:
	cd ./prj_linux/ ; qmake .;
	$(MAKE) -C ./prj_linux/ clean;
	
	

make -s 2>1: warning和error信息会输出到1文件里
make -s >1: warning和error信息会输出到终端里,正常的信息会输出到1里

 编译多个工程时,新建Makefile

appsubdirs=sub1 sub2

app: 
	for d in $(appsubdirs); do (cd $$d; (if  test -e "Makefile"; then $(MAKE) $(MFLAGS); fi;) ); done

cleanapp: 
	for d in $(appsubdirs); do (cd $$d; (if  test -e "Makefile"; then $(MAKE) clean; fi;) ); done

3 qt默认带的变量解释

 DEFINES+=QT_DEPRECATED_WARNINGS:定义编译选项。

QT_DEPRECATED_WARNINGS表示当Qt的某些功能被标记为过时的,那么编译器会发出警告。


常用的pro模板,生成动态库

TARGET = camera

#生成so的路径,直接放到bin文件夹下
PROPWD = ../..
DESTDIR = ../../bin

QT -= qt core gui

#配置:静态库还是动态库,这里是动态库
TEMPLATE = lib
CONFIG += plugin
#CONFIG  += staticlib

#配置:正式用=release,调试时=debug
CONFIG += debug
#CONFIG += release

#配置:其它相关设置
CONFIG += c++11
CONFIG += warn_off

#配置:源码里的宏参数
#DEFINES += OS_LINUX _CLASS_Adapter_DLL SDKONVIF_LIBRARY SDK28181_LIBRARY
DEFINES += OS_LINUX

#配置:系统里的参数
DEFINES += QT_DEPRECATED_WARNINGS

#包含头文件路径
INCLUDEPATH += $${PROPWD}/include



#包含库文件
LIBS += -Wl,-rpath=./:./ffmpeg/Hard:./ffmpeg:./live555:./RtmpLib 
LIBS += -L$${PROPWD}/bin/ffmpeg 


#临时生成的目录
DEPENDPATH += .
 
#编译生成的文件路径设置 
CONFIG(debug, debug|release) {
    QMAKE_CXXFLAGS += -Wall -g 
    MOC_DIR     += ./build/debug/moc
    OBJECTS_DIR += ./build/debug/obj
    UI_DIR      += ./build/debug/ui
    RCC_DIR     += ./build/debug/rcc
} else {
 
    MOC_DIR     += ./build/release/moc
    OBJECTS_DIR += ./build/release/obj
    UI_DIR      += ./build/release/ui
    RCC_DIR     += ./build/release/rcc
}

#包含源文件
include(camera.pri)



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: QMake和CMake都是用于构建C++项目的工具,它们可以帮助开发者自动化地生成Makefile,并且支持跨平台开发QMakeQt的默认构建工具,主要用于构建Qt项目;CMake则是更通用的构建工具,用于构建各种C++项目。在Qt Creator中,用户可以根据自己的需求选择使用QMake或CMake构建自己的项目。 ### 回答2: Qt Creator是一个Qt集成开发环境,它支持使用qmake和CMake两种工具来进行项目的构建。 QMakeQt自带的构建工具,它能够根据.pro文件中所定义的内容自动生成Makefile,从而完成项目的构建。Qt Creator也是基于QMake来进行项目构建的。QMake的优点是,它是Qt的一部分,可以集成于Qt Creator中,在使用时不需要安装额外的第三方软件。另外,QMake简单易用,对于简单的Qt项目,可以快速搭建构建环境。 CMake是一个跨平台的构建工具,它可以在多个平台上进行构建,并且可以生成不同平台上所对应的Makefile或者项目文件。与QMake相比,CMake更加灵活,支持在各种环境下使用,并且通过编写CMake脚本,能够自定义构建过程。此外,CMake还支持通过插件机制,与各种不同的IDE平台集成。 对于选择QMake还是CMake来进行Qt项目的开发,需要根据项目的具体情况来进行选择。对于简单的Qt项目,QMake比较适合,因为它简单易用,能够快速搭建构建环境;但是对于需要跨平台构建的大型项目,或者需要结合多种开发环境的项目,CMake则更适合。而Qt Creator作为一个综合开发环境,它支持使用QMake或CMake进行项目构建,用户可以根据自己的需求和经验来进行选择。 ### 回答3: Qt Creator 是一个强大的跨平台集成开发环境,广泛用于 Qt 应用程序的设计和开发Qt Creator 中有两个主要的构建工具:qmake 和 CMake。这两个工具在 Qt开发中都有其重要作用,我们将在以下内容中对它们进行比较和解释。 qmake 是一个由 Qt 公司开发的构建系统,可以帮助开发人员轻松管理多平台 Qt 应用程序的构建。它是 Qt 的默认构建系统,并从 Qt 4 开始逐渐普及。通过使用 qmake开发人员可以轻松地指定项目依赖项和生成构建规则。它还可以通过将插件添加到项目中来轻松扩展其功能。不过,由于 qmake 只能用于 Qt 项目,因此在处理非 Qt 项目时会受到一定的限制。此外,qmake 虽然简单易用,但它也缺乏一些对于更复杂项目来说必要的功能。 CMake 是一种跨平台构建系统,它可以支持多种编程语言和不同的构建系统。CMake 的优点在于,它提供了更多的功能和更灵活的构建选项,使得开发人员可以更自由的掌控构建流程。由于 CMake 支持多个构建系统(如 Makefile、Ninja),因此开发人员可以根据项目需求进行选择,使得项目的构建更加高效和灵活。由于 CMake 是一个通用的构建工具,因此它可以被用于不同的项目,无论是 Qt 项目还是非 Qt 项目都可以使用。但是,CMake 的学习曲线比较陡峭,对于刚接触它的开发人员来说,可能需要更长的时间来学习和理解它的工作原理。 总体来说,qmake 相对于 CMake 来说较为简单易用,但在处理更复杂和大型的项目时,CMake 显得更为高效和灵活,尤其是对于跨平台项目而言。因此,在选择构建工具时,开发人员需要根据项目的规模和特点来进行权衡和选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值