qtcreator相对路径格式

qtcreator相对路径格式,第1张

pro文件里的相对路径不全都是相对于pro文件的,有的是,有的不是。

1、一种情况下./表示.pro文件所在的目录;另一种情况下./表示构建生成目昌液录;

1.1.是的情况

SOURCE

FORMS

HEADERS

INCLUDEPATH

DEPENDPATH 等等

这些变量中使用的./指的是.pro文件所在的目录

1.2.不是的情况

DESTDIR

OBJECTS_DIR

MOC_DIR

RCC_DIR

UI_DIR

UI_HEADERS_DIR

UI_SOURCES_DIR

win32:CONFIG(debug)

win32:CONFIG(release) 等等

这些变量中使用的./指的是构建生成目录。

2、影子构造说明

如果没有选择影子构造(shadow build),构建生成目录和.pro文件所在目录是同一个目录;

如果指定了shadow build,且指定了构建生成目录,那构建目录和.pro文件所在目录就不是同一个。

我们默认是会选择shadow build的,所以构建目录≠.pro目录。

3、subdirs:多工程多目录的情况

它们的相对路径都是针对你项目下的构建目录+子项目文件夹来的,例如

TEMPLATE = subdirs

SUBDIRS = \

muparser \

librecad

CONFIG += order

那么构建目录,BuildPath假如是F:\CADCAM\QCAD\src\build-LibreCAD-v1.0.4-qt4-Desktop_Qt_4_8_7_MSVC2010_32bit-Debug

于是,相对路径和绝对路径的对应关系,分别是:

---举简世例1---

相对,DESTDIR = bin

绝对,DESTDIR =$${BuildPath}/muparser/bin

绝对,DESTDIR =$${BuildPath}/librecad/bin

---举例2---

相对,DESTDIR = ../bin

绝对,$${BuildPath}/bin

4、.pro文件打印输出

在.pro文件,添加message函数,保存,会在“编译输出”窗口,打印出结果。

message($$PROJECT_ROOT)

message($$PWD)

message($$DESTDIR)

message($$TARGET)

Project MESSAGE: F:/CADCAM/QCAD/src/LibreCAD-v1.0.4-qt4/muparser

Project MESSAGE: F:/CADCAM/QCAD/src/LibreCAD-v1.0.4-qt4/muparser

Project MESSAGE: ../bin/lib

Project MESSAGE: muparserd

5、.pro常用的宏定义

TEMPLATE = app

HEADERS:需要包含的头文件的列表。

SOURCES:需要的源文件的列表。

FORMS:需要的.ui文件的列表。

LEXSOURCES:所有lex源文件的列表。

YACCSOURCES:所耐咐物有yacc源文件的列表。

TARGET:可执行应用程序的名称。默认值为项目文件的名字。

DESTDIR:放置可执行程序目标的目录。

OBJECTS_DIR:放置obj中间文件的目录。

MOC_DIR: moc转换文件路径。

RCC_DIR: 资源文件路径。

UI_DIR:ui文件转换的路径。

RESOURCES:需要包含的资源文件。

LIBS:依赖库的路径和名称 -L{xxdirxx} -l{xxnamexx}。

LIBEXT: 产生lib的后缀。

DEFINES:应用程序所需的额外的宏定义列表。

INCLUDEPATH:应用程序所需的额外的包含路径列表。

DEPENDPATH:应用程序所依赖的搜索路径。

VPATH:寻找补充文件的搜索路径。

DEF_FILE:只有Windows需要:应用程序所要连接的.def文件。

RC_FILE:只有Windows需要:应用程序的资源文件。

RES_FILE:只有Windows需要:应用程序所要连接的资源文件。

TRANSLATIONS: 多国语言支持文件。

INSTALLS: 要安装的文件。

target.path: 安装的路径。

打包平台:安装有QT开发环境的linux系统

发布平台:未安装有QT开发环境的linux系统

以下使用到的路径需要根据自己环境不同进行修改:

    qt安装路径:/opt/Qt5.12.5

    freetype安装路径:/opt/Qt5.12.5/Tools/QtCreator/lib/Qt/lib/            //包含三个文件libfreetype.so、libfreetype.so.6、libfreetype.so.6.17.0

    dbus安装路径:/opt/Qt5.12.5/Tools/QtCreator/lib/Qt/lib/               祥弯 //包含三个文件libdbus-1.so、libdbus-1.so.3、libdbus-1.so.3.26.0

    项目路径:/home/cs/Code/test/

    项目名称:test

使用到的脚本文件:

    copylib.sh

        LibDir=$PWD"/lib"

        Target=$1

        lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))

        $(mkdir $LibDir)

        for Variable in ${lib_array[@]}

        do

            cp "$Variable" $LibDir

        done

    copylib2.sh

        sudo cp /opt/Qt5.12.5/Tools/QtCreator/lib/Qt/lib/libfreetype.so ./

        sudo cp /opt/Qt5.12.5/Tools/QtCreator/lib/Qt/lib/libfreetype.so.6 ./

        sudo cp /opt/Qt5.12.5/Tools/QtCreator/lib/Qt/lib/libfreetype.so.6.17.0 ./

        sudo cp /opt/Qt5.12.5/Tools/QtCreator/lib/Qt/lib/libdbus-1.so ./

        sudo cp /opt/Qt5.12.5/Tools/QtCreator/lib/Qt/lib/libdbus-1.so.3 ./

        sudo cp /opt/Qt5.12.5/Tools/亮迹QtCreator/lib/Qt/lib/libdbus-1.so.3.26.0 ./

   敬宴并 test.sh

        appname=`basename $0 | sed s,\.sh$,,`

        dirname=`dirname $0`

        tmp="${dirname#?}"

        if [ "${dirname%$tmp}" != "/" ]then

        dirname=$PWD/$dirname

        fi

        LD_LIBRARY_PATH=$dirname

        export LD_LIBRARY_PATH

        $dirname/$appname "$@"

    注意事项:该流程里的脚本都是777权限,如遇权限问题请使用 chmod 777 copylib.sh 命令

    首先将程序release编译,在项目路径里找到编译生成的文件夹【build-Test-Desktop_Qt_5_12_5_GCC_64bit-Release】,在这个文件夹内(注意,很重要)建立  copylib.sh 脚本,并执行 ./copylib.sh test 。执行完成之后应该有一个lib文件夹,将lib文件夹内的所有内容和test程序复制到一个新的文件夹下【test-release】。

    在QT安装目录下找到  【/5.12/gcc_64/plugins/platforms】 文件夹,建立  copylib.sh  脚本,并执行  ./copylib.sh libqxcb.so  。执行完成之后将这个 文件夹 复制到【test-release】文件夹中。然后在【test-release/platforms】文件夹中,将【test-release/platforms/lib】文件夹里的所有内容 剪切 到【test-release】文件夹里,并删除lib文件夹。

    在【test-release】目录下建立 copylib2.sh 脚本,并执行 ./copylib2.sh 。

    至此,所有所需的库文件应该都打包完毕。

    在【test-release】目录下建立 test.sh 脚本,利用该脚本启动程序,启动命令为 ./test.sh 。

    遗留问题点:

        1.debug版本未测试,不知道是否可行。

        2.platforms文件夹不仅在【/5.12/gcc_64/plugins/platforms】存在,还在【/Tools/QtCreator/lib/Qt/plugins/platforms】存在。在成功之前一直用的Tools目录下的,但是也有别的细节不一样,待考证。

        3.脚本执行,或者说库的复制顺序似乎有关系。第一次copylib.sh 和 第二次copylib.sh 时会用一部分重叠。待考证哪个优先。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12516276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存