如何处理Windows上.pro文件中不同的库名称
How to deal with varying library names in .pro files on Windows?
如果你用Qt构建库,取决于它是调试版还是发布版,库的名字中将有"d"后缀。例如:
QtCored.dll
然后,如果你想把它链接到你的应用程序,你必须链接正确的版本(调试或发布),这意味着每次都要在.pro文件中明确地命名它们。
Release:LIBS += -llib1 -llib2 -llib3
Debug:LIBS += -llib1d -llib2d -llib3d
据我所知,这是.pro文件可能的(也是通常的)场景。
问题是——这对程序员来说是不是有点太极端了?例如,如果环境已经知道正在以发布模式构建,为什么我们被迫重新键入所有内容2次?真的没有机制告诉Qt"附加d后缀到该条目中的所有库"吗?
到目前为止,我做的是:
//(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}
但是这样做感觉非常糟糕…有合适的方法吗?
在Windows上,从代码中执行。
#ifdef NDEBUG
#pragma comment (lib, "QtCore.dll")
#else
#pragma comment (lib, "QtCored.dll")
#endif
或者如果你需要更多
#ifdef NDEBUG
#define DEBUGSUFFIX ""
#else
#define DEBUGSUFFIX "d"
#endif
#pragma comment (lib, "QtCore" DEBUGSUFFIX ".dll")
#pragma comment (lib, "Etc" DEBUGSUFFIX ".dll")
环境不能知道您有可用的库的发布版本和调试版本。这些库可能来自任何地方。
你的解决方案是两种典型方法之一。另一种方法是为库设置Debug
和Release
文件夹,并且只更改库路径,而不更改库名称。
我不明白为什么。pro文件中额外的几十个字符会被认为是负担。现实情况是,如果你的项目规模和复杂性都很大,你就会有巨大的项目文件,无论是qmake、qbs还是cmake。这将是你最小的问题,所以我建议你不要太担心。
考虑到你正在使用qmake
,你的问题并不是真的与windows相关。一个答案将适用于所有平台。
相关文章:
- 如何将网络模块添加到 QT pro 文件中?
- 如何在.pro文件中为TARGET使用空格和尖括号
- 如何在Qt pro文件中添加导出路径
- 将文件复制到 pro/pri 文件中的新目录
- 需要更新Qt .pro和Visual Studio .vcxproj添加新文件
- 如何在QT中使用pro文件在重新编译时执行shell命令?
- Qt .pro 文件获取 Qtkit 名称
- 从.pro编译可执行文件
- 我的C文件是从Pro*C生成的吗
- 我可以使用.cpp和.h文件制作.pro文件吗?
- QT Pro文件条件液体
- 如何在project.pro呼叫中从带源代码的嵌套文件夹中制作文件
- 将共享库添加到Qt .pro文件中
- 如何让Visual Assist解析Pro*C(*.pc)文件
- 将SOCI与qt =如何编写好 *.pro文件
- 是否可以在 qmake .pro 文件中设置视觉工作室项目属性
- QT-在pro中指定DLL路径.文件
- qmake 不会将库从 .pro 文件添加到生成文件
- 当您添加 qmake 文件(.pro) 时,这些命令的含义是什么?
- 我的旧Qt项目文件(.pro文件),它正在工作;不创建任何文件(moc_ 或 .obj 文件)。为什么它退出构建步骤什么都不做?