前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >qmake的使用

qmake的使用

作者头像
全栈程序员站长
发布2022-08-31 15:13:38
9300
发布2022-08-31 15:13:38
举报

大家好,又见面了,我是你们的朋友全栈君。

前言

在linux环境下进行程序开发时,经常需要使用makefile管理编译代码,特别是一些大型工程,而makefile工具语法晦涩深入研究较为困难,好在有很多工具可以自动生成makefile,qmake就是其中的一种。

qmake特点

  • 为不同的平台的开发项目创建makefile。
  • 可以供给任何一个软件项目使用,而不用管它是不是用Qt写的,尽管它包含了为支持Qt开发所拥有的额外的特征。
  • qmake基于一个项目文件这样的信息来生成makefile。项目文件可以由开发者生成。
  • 不用修改项目文件,qmake也可以为Microsoft Visual Studio生成项目。

.pro文件说明

.pro实例
代码语言:javascript
复制
TEMPLATE = lib #lib库,app可执行工程
TARGET = Func
CONFIG += console c++11 #C++11标准
CONFIG -= qt

DEFINES += IOS_64 #64位
DEFINES += IOS_LINUX #Linux系统

QMAKE_CXXFLAGS += -fPIC
QMAKE_LFLAGS_DEBUG += -L$$PWD/../../Bin/Debug/
QMAKE_LFLAGS_DEBUG += -Wl,-rpath=../../Bin/Debug/
QMAKE_LFLAGS_RELEASE += -L$$PWD/../../Bin/Debug/
QMAKE_LFLAGS_RELEASE += -Wl,-rpath=../../Bin/Debug/

LIBS += -ldl #要链接的库
LIBS += -lboost_thread

release: CurConfig = Release
debug:   CurConfig = Debug

DESTDIR = ../../Bin/$$CurConfig/ #目标文件的最终路径,从pro文件开始的相对路径 
OBJECTS_DIR = obj/$$CurConfig #.o文件的目录

SOURCES += \
    ../FunPublic/ts1.cpp \
    ../FunPublic/ts2.cpp \
    ../FunPublic/ts3.cpp \

HEADERS += \
    ../FunPublic/ts1.h \
    ../FunPublic/ts2.h \
    ../FunPublic/ts3.h \

unix {
    target.path = /usr/lib
    INSTALLS += target
}

INCLUDEPATH += /usr/local/cuda/include/

QMAKE_LFLAGS += -shared
QMAKE_LFLAGS += -L$$PWD/../../Bin/Debug/

QMAKE_LFLAGS += -L$$PWD/../../../../ThirdPartyLib/openrave-0.9/lib
QMAKE_LFLAGS += -Wl,-rpath=../../../../ThirdPartyLib/openrave-0.9/lib/


#如果要添加链接库,只需要加载头文件路径和动态库路径即可
# INCLUDEPATH += /usr/local/cuda/include/ #相对路径是相对工程文件pro的路径
# QMAKE_LFLAGS += -L$$PWD/../../../../ThirdPartyLib/openrave-0.9/lib #相对路径是相对工程文件pro的路径 编译时静态链接
# QMAKE_LFLAGS += -Wl,-rpath=../../../../ThirdPartyLib/openrave-0.9/lib/ #相对路径是相对工作路径 运行时动态链接
# QMAKE_LFLAGS += -Wl,-rpath=\\\$\$ORIGIN/jsoncpp #相对路径是相对so库路径 运行时动态链接
qmake实例
代码语言:javascript
复制
SOURCES = hello.cpp main.cpp
HEADERS = hello.h
CONFIG += qt warn_on release

生成makefile (makefile是根据.pro文件参数生成的): qmake -o Makefile hello.pro qmake -t vcapp -o hello.dsp hello.pro 可以使用qmake -h查看具体的说明

qmake生成makefile

调试经验

  • 在linux平台下可以用ldd命令查看so库所依赖的其他so库,readelf -d libxxx.so | grep rpath查看xxx.so配置的依赖库的链接路径
  • qt如果勾选编译的shadow路径,那么生成的系列文件将不按照pro文件生成,而是生成在shadow路径

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144239.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • qmake特点
  • .pro文件说明
  • qmake生成makefile
  • 调试经验
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档