首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理Windows上.pro文件中的各种库名?

如何处理Windows上.pro文件中的各种库名?
EN

Stack Overflow用户
提问于 2015-07-20 14:48:12
回答 2查看 134关注 0票数 1

如果使用Qt构建库,则取决于是调试还是发行版构建,库的名称中将有"d“后缀。例如:

代码语言:javascript
复制
QtCored.dll 

然后,如果您想将其链接到您的应用程序,则必须链接正确的版本(调试或发布),这意味着每次在.pro文件中显式地命名它们。

代码语言:javascript
复制
Release:LIBS += -llib1 -llib2 -llib3
Debug:LIBS += -llib1d -llib2d -llib3d

据我所知,这是一个可能的(也是通常的) .pro文件场景。

问题是-对程序员来说是不是有点过分了?例如,如果环境已经知道它是在发布模式下构建的,那么为什么我们被迫重新输入所有内容2次呢?是否真的没有机制告诉Qt“在该条目中的所有库中追加d后缀”?

到目前为止,我正在这样做:

代码语言:javascript
复制
//(in a globally included .pro file)
CONFIG( debug, debug|release ) {
    windows:DADD=d
} else {
    DADD=
}
//in actual .pro file
LIBS += -llib1$${DADD} -llib2$${DADD} -llib3$${DADD}

但这样做感觉非常糟糕.有合适的方法吗?

EN

回答 2

Stack Overflow用户

发布于 2015-07-20 14:54:25

在Windows上,从代码中进行操作。

代码语言:javascript
复制
#ifdef NDEBUG
#pragma comment (lib, "QtCore.dll")
#else
#pragma comment (lib, "QtCored.dll")
#endif

或者如果你需要更多

代码语言:javascript
复制
#ifdef NDEBUG
#define DEBUGSUFFIX ""
#else
#define DEBUGSUFFIX "d"
#endif
#pragma comment (lib, "QtCore" DEBUGSUFFIX ".dll")
#pragma comment (lib, "Etc" DEBUGSUFFIX ".dll")
票数 1
EN

Stack Overflow用户

发布于 2015-07-20 21:12:29

环境无法知道您有库的发行版本和调试版本可用。这些图书馆可能来自任何地方。

您的解决方案是两种典型的方法之一。另一种方法是拥有库的DebugRelease文件夹,并且只更改库路径,而不更改库名。

我不认为.pro文件中的额外几十个字符会被认为是累赘的。现实是,如果您有相当大的规模和复杂性的项目,您将有巨大的项目文件,无论它们是qmake,qbs或cmake。这将是你最少的问题,所以我想说,不要太多的汗水。

考虑到您使用的是qmake,您的问题实际上与Windows无关。答案将适用于所有平台。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31519549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档