2016-09-23 52 views
1

我具有由#define指令分支的代碼,例如:有條件鏈接到共享庫在qmake的一個限定

#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 ./定義+ =「USE_LIB_CRYPTO」

所以我需要以某種方式查詢被define傳遞給qmake的,並鏈接到我需要的庫:例如,這應該加以控制。

+0

總是添加lib依賴項。如果沒有必要,鏈接器爲你工作。 – LPs

+0

@LPs如果我鏈接到不構建機器,我得到'在/ usr/bin中/ LD上存在的庫:找不到-lsdfjiijasdf'所以我覺得這個應該加以控制。 –

+0

好吧,顯然它需要存在於你的SDK上。 – LPs

回答

1

您可以使用qmake的contains測試功能。

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