qmake编译选项的控制(debug|release)
2015-12-03 21:45
225 查看
在 Qt 编程中,多数人用的都是 qmake,并编写相应pro文件。
实际中经常需要对 debug 与 release 两种编译模式 设置不同的选项,比方说链接不同库
遇到该问题,简单看看qmake的manual,不少人都会写出类似下面的内容:
很不幸,这么做通常不能正常工作。
如果打开看生成的makefile文件,会发现 无论是debug还是release,上面的两个语句都会同时起作用。也就是说,上面相当于
这是很违反直觉的,因为CONFIG可以同时定义 debug 和 release,但只有一个处于active(当两个互斥的值出现时,最后设置的处于active状态)
比如:
这种情况下,release处于active状态,但,debug 和 release 都能通过上面的测试。
或
那么,CONFIG(debug, debug|release) 这种语法是什么含义呢?
两个参数,前者是要判断的active的选项,后者是互斥的选项的一个集合。
实际中经常需要对 debug 与 release 两种编译模式 设置不同的选项,比方说链接不同库
遇到该问题,简单看看qmake的manual,不少人都会写出类似下面的内容:
debug { LIBS += -L../lib1 -lhellod } release { LIBS += -L../lib2 -lhello }
很不幸,这么做通常不能正常工作。
如果打开看生成的makefile文件,会发现 无论是debug还是release,上面的两个语句都会同时起作用。也就是说,上面相当于
LIBS += -L../lib1 -lhellod -L../lib2 -lhello
原因
这是很违反直觉的,因为CONFIG可以同时定义 debug 和 release,但只有一个处于active(当两个互斥的值出现时,最后设置的处于active状态)比如:
CONFIG = debug CONFIG += release ...
这种情况下,release处于active状态,但,debug 和 release 都能通过上面的测试。
如何解决
CONFIG(debug, debug|release) { LIBS += -L../lib1 -lhellod } else { LIBS += -L../lib2 -lhello }
或
CONFIG(debug, debug|release):LIBS += -L../lib1 -lhellod CONFIG(release, debug|release):LIBS += -L../lib2 -lhello
那么,CONFIG(debug, debug|release) 这种语法是什么含义呢?
两个参数,前者是要判断的active的选项,后者是互斥的选项的一个集合。
相关文章推荐
- 一些漂亮的js库
- Android之mvp和mvc对比分析以及实际应用
- 练习E-5
- Android第三方开源FloatingActionButton(com.getbase.floatingactionbutton)【1】
- 图的搜索
- 京东咚咚架构演进
- 图的搜索
- 【Objective-C学习记录】第二天
- 默认实参,constexpr函数
- iOS开发见闻-第9期
- Day2:12/03/2015继承(Derived)
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- AngularJS之页面跳转Route
- 使用SQL Server保存Session状态,实现单点登录
- Java Web中的中文编码问题(上)
- 十万个对不起实现,Java版
- 使用Java编写并运行Spark应用程序
- Android设置特定时间执行操作
- 《TCP/IP详解 卷1:协议》读书笔记 第八章 Traceroute程序
- Hibernate validation 的使用. Bean 自动校验