2016-08-19 72 views
1

如果它所依賴的ALSA庫的版本低於某個值,那麼我的Qt5程序需要使用一個枚舉,並且如果該版本大於或等於該值,則需要使用不同的枚舉。是否有可能讓qmake檢查該庫的版本並設置一個可以用來設置適當的枚舉表達式的定義?是否可以使用qmake來檢查庫的版本?

回答

1

這是可能的,但沒有必要。你的問題是另一個X-Y問題:你想要的只是檢查ALSA庫的版本。 qmake沒有在其中的任何位置,對不對?

所有你想要的是:

#include <alsa/version.h> 

#if SND_LIB_VERSION >= 0x010005 
// 1.0.5 and later 
enum { FOO = 42 }; 
#else 
// 1.0.4 and earlier 
enum { FOO = 101010 }; 
#endif 

更妙的是,在現代C++,你可以確保你的代碼不會有點腐:

int constexpr kFoo() { 
    return (SND_LIB_VERSION >= 0x010005) ? 42 : 101010; 
} 
+0

真棒。謝謝你的幫助。 –