如果您使用Qt构建库,则取决于该库是Debug还是Release版本,该库的名称将带有“d”后缀。例如:

QtCored.dll

然后,如果要将其链接到应用程序,则必须链接正确的版本(调试或发行版),这意味着每次都在.pro文件中明确命名它们。
Release:LIBS += -llib1 -llib2 -llib3
Debug:LIBS += -llib1d -llib2d -llib3d

据我所知,这是.pro文件的可能(和通常)方案。

问题是-对程序员来说是否有点太极端了?例如,如果环境已经知道它是在 Release模式下构建的,为什么我们被迫两次键入所有内容?真的没有机制告诉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")

关于c++ - 在Windows上如何处理.pro文件中不同的库名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31519549/

10-11 17:57