使用QCreator +Git 的时候因为QCreator 的自己生成项目文件在其他机器上面不能使用(编译步骤会还原成只剩qmake-make)。导致一些自定义编译步骤和一些脚本操作不在能用。现在,我们可以通过 qmake 的自定义 Makefile 文件输出达到这一目地。
比如我这边用了第三方编译好的静态库,编译时候拷贝了头文件和 LIBS += -L ./ -llibname 这样的选项,这时如果我们选择用 Shadow build 指定编译到其他目录去的时候,qmake生成make文件是不能找到-l中的的相关静态库文件的。这时候自定义 Makefile 文件输出就有用了。
qmake的pro文件中有这个变量QMAKE_EXTRA_TARGETS 这个可以理解为额外编译目标、还有PRE_TARGETDEPS可以理解为预编译目标依赖 ,比如下面这个
mybuild.target=mybuild win32{ mybuild.commands=${COPY} ../project/libname-mingw.a libname.a }else{ mybuild.commands=${COPY} ../project/libname-gcc.a libname.a } QMAKE_EXTRA_TARGETS += mybuild PRE_TARGETDEPS += mybuild
像上面这个就是定义了一个在Makefile中的一个编译目标mybuild
然后make的时候,在我们编译目标文件之前就执行mybuild。这样就保证了编译时候库文件就拷贝到编译目录里面。不需要在QCreator里面设置编译步骤去拷贝了,其commands 里面还可以直接调用本地脚本执行更多的方法。