Qt - pro文件的简单配置说明
简介
使用Qt开发时,pro文件是对工程中所有源码、编译、资源、目录等的全方位配置的唯一途径,
pro文件的编写非常重要,现对几个重要项进行说明(Win、Linux和Mac平台通用)
注释
以”#”开始的行,直到结束
模板变量
告诉qmake生成哪种makefile
TEMPLATE = app
其中
- app -表示该工程建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用
- lib - 表示该工程建立一个库的makefile
生成目录
指定生成的可执行程序的目录,可以绝对和相对路径
DESTDIR += ../bin
生成的应用程序名
软件名
TARGET = qtest
编译选项
增添或者移除某个模块
比如增添C++11和console支持,Qt的各模块也在这里面添加
CONFIG += console c++11 network CONFIG -= qt
可以用空格分隔或者”\”来隔行
目标文件目录
obj文件存放的目录,可以绝对或相对路径
OBJECTS_DIR += ../tmp
工程中包含的头文件
表示本工程中的头文件
HEADERS += \ libcurl/curl/curl.h \ libcurl/curl/curlbuild.h \ libcurl/curl/curlrules.h \
只要qtcreator目录树里add进去了就自动添加
工程中包含的源文件
表示本工程中的源文件
SOURCES += mytest.cpp\
main.cpp
只要qtcreator目录树里add进去了就自动添加
工程中包含的资源文件
表示本工程包含的资源文件
RESOURCES += qrc/painter.qrc
只要qtcreator目录树里add进去了就自动添加,更改pro文件会同步更新qtcreator里的目录树,但不会影响硬盘上的资源文件
附加头文件包含目录
一般要编译链接第三方库时配置include目录
INCLUDEPATH += ./boost/include\ src/thirdpart/include
或者
INCLUDEPATH += D:/boost/include\ E:/cocos2dx/include
- 可以用绝对或相对路径
- 相对路径中./可以省略
- 路径中不允许出现空格
链接库
对于静态库(.lib, .a)以及动态库.so
LIBS += -LD:/codetest/libcurlcpp/libcurl/lib/ -llibcurl\ -LD:/codetest/libcurlcpp/libcurl/lib/ -lws2_32\ -LD:/codetest/libcurlcpp/libcurl/lib/ -lwldap32\ -LD:/codetest/libcurlcpp/libcurl/lib/ -lopencv\ -LD:/codetest/libcurlcpp/libcurl/lib/ -lzmq
或者
LIBS += D:/codetest/libcurlcpp/libcurl/lib/libcurl.lib\ D:/codetest/libcurlcpp/libcurl/lib/ws2_32.lib\ D:/codetest/libcurlcpp/libcurl/lib/wldap32.lib D:/codetest/libcurlcpp/libcurl/lib/opencv.a
或者
LIBS += $$PWD/libcurl/lib/libcurl.lib\ $$PWD/libcurl/lib/ws2_32.lib\ $$PWD/libcurl/lib/wldap32.lib
- 可以用-L指定目录,-l指定库的名称(无需后缀,.lib,.a, .so都适用)
- 可以直接通过绝对路径和相对路径指定库的完整path(需后缀,.lib,.a, .so都适用),相对路径用$$pwd前缀,路径不允许空格
- LIBS += somepath 这个可以多行写,也可以用“\”隔行
- 最后一种只适用于windows静态库
- 对于linux链接库, 比如opencv项目用make编译出的libopencv.a或者libopencv.so,链接的时候必须写 -lopencv ,写项目的名字而不是库的文件名字
对于动态库dll,必须拷贝到exe执行目录或者在环境变量里配置路径
预编译宏
DEFINES += USE_OPENSSL\
CURL_STATICLIB
类似于vs里面在工程里设置预编译选项
平台相关性处理
根据qmake所运行的平台来使用相应的作用域来进行处理
win32 { SOURCES += 1.cpp } else { SOURCES += 2.cpp }
根据平台进行条件编译
博客园文作者:Citrusliu
博文地址:https://www.cnblogs.com/citrus
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性