【问题标题】:Conditionally link to shared library on a define in qmake有条件地链接到 qmake 中定义的共享库
【发布时间】:2016-09-23 07:28:07
【问题描述】:

我有一个由#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 并链接到我需要的库。

【问题讨论】:

  • 总是添加 lib 依赖。如果没有必要,链接器会为您完成这项工作。
  • @LPs 如果我链接到构建机器上不存在的库,我会得到/usr/bin/ld: cannot find -lsdfjiijasdf 所以我认为应该控制它。
  • 嗯,显然它必须存在于你的 SDK 中。
  • 顺便说一句,您可以使用CONFIG,如this answer所示

标签: c++ c qt qmake


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多