大家好,又见面了,我是你们的朋友全栈君。
前言
在linux环境下进行程序开发时,经常需要使用makefile管理编译代码,特别是一些大型工程,而makefile工具语法晦涩深入研究较为困难,好在有很多工具可以自动生成makefile,qmake就是其中的一种。
qmake特点
- 为不同的平台的开发项目创建makefile。
- 可以供给任何一个软件项目使用,而不用管它是不是用Qt写的,尽管它包含了为支持Qt开发所拥有的额外的特征。
- qmake基于一个项目文件这样的信息来生成makefile。项目文件可以由开发者生成。
- 不用修改项目文件,qmake也可以为Microsoft Visual Studio生成项目。
.pro文件说明
.pro实例
TEMPLATE = lib #lib库,app可执行工程
TARGET = Func
CONFIG += console c++11 #C++11标准
CONFIG -= qt
DEFINES += IOS_64 #64位
DEFINES += IOS_LINUX #Linux系统
QMAKE_CXXFLAGS += -fPIC
QMAKE_LFLAGS_DEBUG += -L$$PWD/../../Bin/Debug/
QMAKE_LFLAGS_DEBUG += -Wl,-rpath=../../Bin/Debug/
QMAKE_LFLAGS_RELEASE += -L$$PWD/../../Bin/Debug/
QMAKE_LFLAGS_RELEASE += -Wl,-rpath=../../Bin/Debug/
LIBS += -ldl #要链接的库
LIBS += -lboost_thread
release: CurConfig = Release
debug: CurConfig = Debug
DESTDIR = ../../Bin/$$CurConfig/ #目标文件的最终路径,从pro文件开始的相对路径
OBJECTS_DIR = obj/$$CurConfig #.o文件的目录
SOURCES += \
../FunPublic/ts1.cpp \
../FunPublic/ts2.cpp \
../FunPublic/ts3.cpp \
HEADERS += \
../FunPublic/ts1.h \
../FunPublic/ts2.h \
../FunPublic/ts3.h \
unix {
target.path = /usr/lib
INSTALLS += target
INCLUDEPATH += /usr/local/cuda/include/
QMAKE_LFLAGS += -shared
QMAKE_LFLAGS += -L$$PWD/../../Bin/Debug/
QMAKE_LFLAGS += -L$$PWD/../../../../ThirdPartyLib/openrave-0.9/lib
QMAKE_LFLAGS += -Wl,-rpath=../../../../ThirdPartyLib/openrave-0.9/lib/
#如果要添加链接库,只需要加载头文件路径和动态库路径即可
# INCLUDEPATH += /usr/local/cuda/include/ #相对路径是相对工程文件pro的路径
# QMAKE_LFLAGS += -L$$PWD/../../../../ThirdPartyLib/openrave-0.9/lib #相对路径是相对工程文件pro的路径 编译时静态链接
# QMAKE_LFLAGS += -Wl,-rpath=../../../../ThirdPartyLib/openrave-0.9/lib/ #相对路径是相对工作路径 运行时动态链接