【发布时间】:2016-12-26 23:43:35
【问题描述】:
如果我的 Qt5 程序所依赖的 ALSA 库的版本小于某个值,则需要使用一个枚举,如果版本大于或等于该值,则需要使用不同的枚举。 qmake 是否可以检查该库的版本并设置一个我可以用来设置正确枚举表达式的定义?
【问题讨论】:
如果我的 Qt5 程序所依赖的 ALSA 库的版本小于某个值,则需要使用一个枚举,如果版本大于或等于该值,则需要使用不同的枚举。 qmake 是否可以检查该库的版本并设置一个我可以用来设置正确枚举表达式的定义?
【问题讨论】:
这是可能的,但没有必要。您的问题是另一个 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;
}
【讨论】: