QT pro文件 多目录多工程

基于CMakefile 多目录工程,改写Qt 工程文件, 演示一个简单的工程目录。

目录结构如下:

.
├── app                                                       # 源码目录app
│   └── main.cpp
├── gui                                                         # 编译目录,分minigui(CMakefile) , Qt(qmake)
│   ├── minigui                                                    # minigui
│   └── qt                                                             # qt
│       ├── app
│       │   └── app.pro
│       ├── libtest
│       │   └── libtest.pro
│       ├── makeqt.sh                                  # 编译脚本
│       ├── test-arm
│       ├── main.pro
│       └── main.pro.user
└── libtest                                                    # 源码目录libtest
    └── hello.cpp

7 directories, 8 files
 

 

1.源码目录libtest 编译成库

cat libtest/hello.cpp

/// @file hello.cpp
/// @brief 
/// @author EastonWoo <31417071@qq.com>
/// 0.01
/// @date 2019-08-20

#include <stdio.h>

void func() {
    printf("hello world!\n");
}

2.源码目录app编译成应用

cat app/main.cpp

/// @file main.cpp
/// @brief 
/// @author EastonWoo <31417071@qq.com>
/// 0.01
/// @date 2019-08-20

#include <stdio.h>

extern void func();

int main(int argc, const char *argv[])
{
    printf("Main Functions!\n");
    func();
    return 0;
}

3. 编译主pro文件:

cat gui/qt/main.pro

#-------------------------------------------------
#
# Project created by QtCreator 2019-08-14T17:41:05
#
#-------------------------------------------------

message("11111111111 [$$ARCH]")
if (equals($$ARCH,x86)) { 
    message("x86 平台需要做的操作")
} else {
    message("arm 平台需要做的操作")
    # ARCH=arm
}

MY_PROJECT_SOURCE_DIR = $$PWD/../..

TEMPLATE = subdirs
CONFIG += ordered

SUBDIRS += libtest \
    app \

4. 编译子目录libtest

cat gui/qt/libtest/libtest.pro

### My Dirs
MY_PROJECT_SOURCE_DIR = $$PWD/../../..
MY_BUILD_DIR = $$PWD/../.build
MY_GUI_ROOT_DIR = $$PWD/..
MY_CURRENT_RPO_DIR = $$PWD/

TARGET = libtest
TEMPLATE = lib

CONFIG += c++11 \
    staticlib \

    
SOURCES += \
    $$MY_PROJECT_SOURCE_DIR/libtest/hello.cpp

5.编译子目录app

### My Dirs
MY_PROJECT_SOURCE_DIR = $$PWD/../../..
MY_BUILD_DIR = $$PWD/../.build
MY_GUI_ROOT_DIR = $$PWD/..
MY_CURRENT_RPO_DIR = $$PWD/

TARGET = test-$$ARCH
TEMPLATE = app
DESTDIR = $$MY_GUI_ROOT_DIR

CONFIG += c++11 


SOURCES += \
    $$MY_PROJECT_SOURCE_DIR/app/main.cpp

LIBS += -L$$MY_BUILD_DIR/libtest -llibtest

6. 编译脚本

cat gui/qt/makeqt.sh 

#!/bin/bash - 
#===============================================================================
#
#          FILE: makeqt.sh
# 
#         USAGE: ./makeqt.sh 
# 
#   DESCRIPTION: 
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: EastonWoo 
#  ORGANIZATION: 
#       CREATED: 08/20/2019 16:21
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

rm -rf .build
mkdir -p .build

cd .build

/usr/local/Qt-arm/bin/qmake ../main.pro -spec devices/linux-TIarmv7-sgx-g++ ARCH=arm && /usr/bin/make qmake_all

make -j4

# make clean -j4 

cd ..

7.运行脚本

test-> ls
app/  gui/  libtest/
test-> cd gui/qt/

qt-> la
./  ../  app/  .build/  libtest/  makeqt.sh  test.pro  test.pro.user

qt-> sh makeqt.sh 

qt-> la
./  ../  app/  .build/  libtest/  makeqt.sh  test-arm*  test.pro  test.pro.user
已生成test-arm可执行文件

8.在arm板卡上运行

root@buildroot:/work# /usr/local/bin/runapp ./test-arm 
Main Functions!
hello world!
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值