Qt qmake中可以使用条件判断来加载不同项,如:
DEFINES += FFMPEG_4_2_2
contains(DEFINES, FFMPEG_4_0_2){
message("ffmpeg4.0.2 64bit")
}
contains(DEFINES, FFMPEG_4_2_2){
message("ffmpeg4.2.2 64bit")
}
#可正常判断
但contains 的括号如果另起一行,则不能正常打印。如
DEFINES += FFMPEG_4_2_2
contains(DEFINES, FFMPEG_4_0_2)
{
message("ffmpeg4.0.2 64bit")
}
contains(DEFINES, FFMPEG_4_2_2)
{
message("ffmpeg4.2.2 64bit")
}
#无法正常判断,两条语句都会打印出来
qmake会多次打印,解决方法:
https://blog.csdn.net/nicai_xiaoqinxi/article/details/103729119
## 去除config中多余的debug 和 release
defineReplace(remove_extra_config_parameter) {
configs = $$1
debug_and_release_params = # 匹配预选队列
keys = debug Debug release Release debug_and_release
for (iter, configs) {
contains(keys, $$iter) {
debug_and_release_params += $$iter
}
}
for (iter, debug_and_release_params) {
configs -= $$iter # 移除预选队列的属性
}
configs += $$last(debug_and_release_params) # 添加(保留)预选队列的最后属性
return($$configs)
}
# 使用
CONFIG = $$remove_extra_config_parameter($$CONFIG)