Qmake 编写pro常用参数
TEMPLATE = subdirs #编译类型-子目录
CONFIG = ordered #编译次序-顺序编译
SUBDIRS += ParaIO #子目录名
在程序顶层执行" qmake –r ",在每个子目录生产Makefile文件
MOC_DIR=./moc
指定moc文件存放路径
OBJECTS_DIR=./obj
指定.o 文件路径
QMAKE_CXXFLAGS += -g
g++ 编译添加 –g 选项,增加调试信息
QMAKE_CFLAGS += -g
gcc 编译添加 –g 选项,增加调试信息
参数 “-o”生成指定Makefile的名字
Eg.
qmake seisFlwo.pro -o Makefile_pro –r
根据pro文件在各个子目录生成Makefile,命名为 Makefile_pro
make -f Makefile_pro
编译seisFlwo.pro内所包含的所有的Makefile
*******************************************************************************************************
手动编写makefile时,应从系统层面考虑,编译时务必自顶向下编译各个子目录,禁止将各个模块分别编译,手动拷贝执行文件
使用参数 “-C”,eg.
make –C tools # 编译子目录tools
make clean–C tools #清除子目录tools
. PHONY
显式请求时执行命令的名字, eg.
.PHONY all: #编译时执行命令,缺省为all
all: tool #命令名所包含子模块
.PHONY clean:
clean: tool_clean
tool_clean: #子模块的具体编译内容
make clean-C tools
tool:
make -Ctools参数 "-j"
多核编译,适用于多核处理器,
查看cpu信息确定核数,"cat/proc/cpuinfo"
运行命令 make -j 核数+1 , 加快编译速度
参数 "-s", 不打印编译信息
参数 "-f ",编译 指定makefile,默认编译Makefile和makefile文件,eg, make -f mymakefile
*******************************************************************************************************
环境变量的使用
编程原则
禁止使用绝对路径
尽量不用相对路径
使用环境变量,提高代码可移植性
qmake的pro中获取方式$$(PROJECTDIR)
cmake中的获取方式 $ENV{PROJECTDIR}
c程序中获取方式getenv("PROJECTDIR")
shell脚本中获取方式 ${BASE_PATH}
python程序中获取方式
import os
os.getenv("PROJECTDIR")
参考:http://blog.chinaunix.net/uid-17271829-id-5088010.htmlQT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a #cortex-A8QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
modifications to g++.conf
QMAKE_CC = arm-linux-gcc #此处需要根据开发者电脑使用的具体交叉编译器的配置而定
QMAKE_CXX = arm-linux-g++
QMAKE_LINK = arm-linux-g++
QMAKE_LINK_SHLIB = arm-linux-g++
参考:http://blog.csdn.net/clmngu/article/details/51207222
测试代码:
- int main(void)
- {
- double counter;
- double result;
- double temp;
- for (counter = 0; counter < 2000.0 * 2000.0 * 2000.0 /20.0 + 2200; counter += (5-1)/4)
- {
- temp = counter / 1979;
- result = counter;
- }
- printf("Result is %lf\\n", result);
- return 0;
- }