有条件地 link 到 qmake 中定义的共享库

Conditionally link to shared library on a define in qmake

我有一个由 #define 指令分支的代码,例如:

#ifdef USE_LIB_CRYPTO
#include <openssl/evp.h>
#else
#include <cryptopp/pwdbased.h>
#include <cryptopp/sha.h>
#endif

取决于是否定义了USE_LIB_CRYPTO 我应该添加

LIBS += -lcrypto

LIBS += -lcryptopp

我该怎么做?例如,这应该由以下内容控制:

qmake ./ DEFINES+="USE_LIB_CRYPTO"

所以我需要以某种方式检查 define 传递给 qmake 和 link 传递给我需要的库。

您可以使用contains qmake 的测试功能。

contains ( DEFINES, USE_LIB_CRYPTO ){
    LIBS += -lcrypto
} else {
    LIBS += -lcryptopp
}