2016-09-23 5 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 ./ DEFINES + = «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 
}