使用Qt4.7编写跨平台的应用的时候,Qt默认采用的影子构建,但该影子构建还没有Qt5那么完善,比较死板,有些东西还不能支持。
为了能够自己控制想要的编译结果,如生成指定的文件夹、文件路径等等,使用.pro进行控制,尤其是相对路径的使用等。
将这个.pro文件赋值三份,分别为project_l.pro(linux)、project_a.pro(arm)、project_w.pro(windows),修改其中的SysCrtl变量,用以控制生成的最终版本。
#***begin***#
SysCtrl = 1 #1-win32,2-linux,3-arm
DstPath = $$PWD/../
RunPath = $${DstPath}run/
TmpPath = $${DstPath}tmp/
contains(SysCtrl,1){
FinalRunPath = $$join(RunPath,,,x86_win)
}else{
contains(SysCtrl,2){
FinalRunPath = $$join(RunPath,,,x86_linux)
}else{
contains(SysCtrl,3){
FinalRunPath = $$join(RunPath,,,arm)
}else{
error(CtrlVar set out range!)
}
}
}
FinalTmpPath = $${TmpPath}$$join(TARGET,,,_tmp)
CONFIG(release,debug|release){
FinalRunPath = $$join(FinalRunPath,,,_r)
FinalTmpPath = $$join(FinalTmpPath,,,_r)
}else{
CONFIG(debug,debug|release){
FinalRunPath = $$join(FinalRunPath,,,_d)
FinalTmpPath = $$join(FinalTmpPath,,,_d)
}else{
error(Compile debug_release out range!)
}
}
DESTDIR = $${FinalRunPath}
UI_DIR = $${FinalTmpPath}
RCC_DIR = $${FinalTmpPath}
MOC_DIR = $${FinalTmpPath}
OBJECTS_DIR = $${FinalTmpPath}
#****end****#
1、以上实现功能为使用相对路径生成目标路径、文件夹、文件。
2、以指定的命名方式生成编译结果。
3、控制不同平台的编译结果。
注意:上述配置尚未能解决生成的makefile在源文件中的问题,若有大神看到,能够补充的话就好了。