赞
踩
目录
2.配置vs和qmake环境变量执行qmake生成makefile
3.通过批处理完成qt项目编译并移植到ubuntu下完成qt项目配置和编译
6. qmake语法设置pro中的库导入路径和导入库导入opencv
7. qmake创建动态链接和静态链接库并在windows中输出dll和lib
9. qtcreator的debug版本和release版本配置和设置
1.qt项目由源码和界面资源文件到程序的步骤分析
1.编译pro生成makefile(经常出现问题自己要执行这一步)
2.windows下,例如,vs编译的话,就用jom(生成界面源码)或make
回顾:
2.配置vs和qmake环境变量执行qmake生成makefile
- SOURCES += main.cpp //源码
- CONFIG += console //控制台
- #include <iostream>
- using namespace std;
- int main()
- {
- cout<<"test for qmake"<<endl;
- getchar();
- return 0;
- }
qmake -o makefile testqmake.pro
注意:就会有环境变量没设置的错误:
同目录下创建make.bat 文件: 加引号是为了防止从空格出断开
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
在cmd下再次指向上述语句:
注意:
如果使用qmake 或者 jom 要配置环境变量
第一个是qmake 第二个是 jom的路径
3.通过批处理完成qt项目编译并移植到ubuntu下完成qt项目配置和编译
- call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
- qmake -o makefile testqmake.pro
- jom /f makefile
- pause
- #include <iostream>
- using namespace std;
- int main()
- {
- cout<<"test for qmake"<<endl;
- getchar();
- return 0;
- }
LINUX下:
1.环境变量:
env 可以查看
2.查看目录,使用qmake生成makefile
3.执行make
- export PATH=/opt/Qt5.9.0/5.9/gcc_64/bin:$PATH
- qmake -o makefile testqmake.pro
- make
4.qmake的pro项目导出为vs项目
第一种:导出vs的工程
生成:
第二种:直接在VS插件中打开
5. qmake引入qt库创建窗口设置头文件
加入qt库:
编写代码:
注意:多看文档,加什么怎么加,都在文档里有
加载qt内部库
头文件引用:
message可以打印出路径来查看
opencv2 在include 路径下。
6. qmake语法设置pro中的库导入路径和导入库导入opencv
先看一下加了opencv的库:
就会报错:缺少库
库引|用和库路径指定
说明:DESTDIR 这是指定运行的路径(或者在项目里直接添加RUN里,也可以在这里)
TARGET:指定生成的名字
结果:
7. qmake创建动态链接和静态链接库并在windows中输出dll和lib
1.QTCreator创建一个Library c++共享库
.cpp文件 构造函数
头文件:
这里有 宏 判断:区分 库本身调用 还是 导入调用
2.手动创建
xglobal.h
- #ifndef XGLOBAL_H
- #define XGLOBAL_H
- #include <QtCore/qglobal.h>
-
- #ifdef LIBDLL_LIB
- #define XEXPORT Q_DECL_EXPORT
- #else
- #define XEXPORT Q_DECL_IMPORT
- #endif
-
- #endif // XGLOBAL_H
xsocket.h
- #ifndef XSOCKET_H
- #define XSOCKET_H
- #include "xglobal.h"
- class XEXPORT XSocket
- {
- public:
- XSocket();
- };
-
- #endif
xsocket.cpp
- #include "xsocket.h"
- #include <iostream>
- using namespace std;
- XSocket::XSocket()
- {
- cout<<"create Xsocket"<<endl;
- }
libdll.pro
- SOURCES +=xsocket.cpp //源文件
- HEADERS += xsocket.h \ //头文件
- xglobal.h
-
- TEMPLATE=lib //生成动态库
- DEFINES += LIBDLL_LIB //宏定义
- DESTDIR = "../../lib" //lib库文件输出路径
- DLLDESTDIR = "../../bin" //dll动态文件输出路径
- #CONFIG +=staticlib //这个是生成静态库文件
- #CONFIG +=console //生成控制台
-
- CONFIG(debug,debug|release){
- TARGET = libdll_d
- }else{
- TARGET=libdll
- }
- message($$TARGET)
pro项目文件中设置dll和lib的输出路径并测试
测试文件的代码:
testlibdll.pro
- QT += core
- QT -= gui
- INCLUDEPATH += ../libdll //头文件的路径
- LIBS += -L../../lib -llibdll //-l是指定链接哪个库
- CONFIG += c++11
-
- TARGET = testlibdll
- CONFIG += console
- CONFIG -= app_bundle
-
- TEMPLATE = app
-
- SOURCES += main.cpp
- #include <QCoreApplication>
- #include "xsocket.h"
- #include <iostream>
- using namespace std;
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- cout<<"test lib"<<endl;
- XSocket x;
- return a.exec();
- }
8. 在ubuntu下测试so库
在linux平台下,会自动加成:liblibdll.so
库:
调用:
测试的时候注意动态库的路径问题。
9. qtcreator的debug版本和release版本配置和设置
10 .qtcreator的qmake跨平台配置
测试代码:
- QT += core gui
-
- greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
-
- TARGET = mkspecs
- TEMPLATE = app
-
- DEFINES += QT_DEPRECATED_WARNINGS
-
- win32:TARGET = winmkspecs
- linux:TARGET = linuxmkspecs
- win32{
- message(win32)
- }
- linux{
- message(linux)
- }
- !linux{
- message("not linux")
- }
- !win32{
- message("not windows")
- }
- win32|linux{
- message("win or linux")
- }
- message($$QMAKESPEC)
- win32-g++{
- message(win32-g++)
- }
- win32-msvc{
- message(win32-msvc)
- }
-
- SOURCES += \
- main.cpp \
- widget.cpp
-
- HEADERS += \
- widget.h
-
- FORMS += \
- widget.ui
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。