shadowed(path) 是qmake 中的replace function。
其作用是将源码路径path 映射到构建目标路径中相应位置。输入的path不能是工程文件夹之外,否则会输出空字符串。
比如源码工程文件路径为:E:\workspace\QtWork\testEmpty\testEmpty.pro
工程构建路径为:E:/workspace/QtWork/build-testEmpty-Desktop_Qt_5_12_0_MSVC2015_64bit
测试如下:
path=E:\workspace\QtWork\testEmpty\gg
tt=$$shadowed(path) #将E:\workspace\QtWork\testEmpty\path映射到目标文件夹下
message($$tt) #输出E:/workspace/QtWork/build-testEmpty-Desktop_Qt_5_12_0_MSVC2015_64bit/path
tt=$$shadowed($$path) #将E:\workspace\QtWork\testEmpty\gg映射到目标文件夹下
message($$tt) #输出E:/workspace/QtWork/build-testEmpty-Desktop_Qt_5_12_0_MSVC2015_64bit/gg
path=D:/tt1/tt2
tt=$$shadowed(path) # D:/tt1/tt2无法在E:\workspace\QtWork\testEmpty存在,无法映射。
message($$tt) #输出空
path=aa
tt=$$shadowed($$path)
message($$tt) #输出E:/workspace/QtWork/build-testEmpty-Desktop_Qt_5_12_0_MSVC2015_64bit/aa
#path=C: #此处应该是个bug
#tt=$$shadowed($$path)
#message($$tt) #输出E:/workspace/QtWork/build-testEmpty-Desktop_Qt_5_12_0_MSVC2015_64bit/C:
path=C:\
tt=$$shadowed($$path) # C:\无法在E:\workspace\QtWork\testEmpty存在,无法映射。
message($$tt) #输出空
path=E:/workspace/QtWork
tt=$$shadowed($$path) #E:/workspace/QtWork 无法在E:\workspace\QtWork\testEmpty存在,无法映射。
message($$tt) #输出空
message($$PWD) #输出E:/workspace/QtWork/testEmpty
yy=$$PWD
zz=$$shadowed($$yy) #E:/workspace/QtWork/testEmpty 映射到目标文件夹下
message($$zz) #输出E:/workspace/QtWork/build-testEmpty-Desktop_Qt_5_12_0_MSVC2015_64bit