QT&CMake

参考:

Qt 编译方式之 cmake_lucky-billy的博客-CSDN博客_qt cmake

引入第三方库:

link_directories, LINK_LIBRARIES, target_link_libraries使用总结_商汤科技的博客-CSDN博客_link_directories的作用

 cc常用变量:

C++:CMake常用变量【CMAKE_CXX_FLAGS、CMAKE_BUILD_TYPE、×_BINARY_DIR】_u013250861的博客-CSDN博客_cmake_cxx_flags

一、PROJECT(<Name>)
功能:用于指定项目的名称

这条指令会自动创建两个变量:
<projectname>_SOURCE_DIR(源代码路径) 和 <projectname>_BINARY_DIR(二进制文件保存路径)
cmake系统也帮助我们预定义了 PROJECT_SOURCE_DIR 和 PROJECT_BINARY_DIR 其值与上述对应相等
<projectname>_SOURCE_DIR 指向的目录同内部构建相同,仍然是项目目录
<projectname>_BINARY_DIR 则有所不同,指向<项目目录>/build目录

二、引入QT中的包:
find_package(Qt5 REQUIRED COMPONENTS <包名> )
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS <包名> ) 
例子:                                                                                                find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets ) 
find_package(Qt5 REQUIRED COMPONENTS  Widgets )
find_package(Qt6 Charts)

三、链接库:
1. target_link_libraries("${PROJECT_NAME}"  <库名>)
2. link_libraries("${PROJECT_NAME}"  Qt::Network )
3. link_libraries( Qt::Network )

例子:

//在.pro 中:
QT += Charts
//等价于在CMakeLists.txt中 :
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Charts ) 
link_libraries( Charts )

三、将所有文件保存在一个变量中    
file(GLOB_RECURSE  all_files  *.h  *.cpp  *.c ) // <all_files>为变量名
create_filters(all_files)                                                                                                                      add_executable(<项目名> ${all_files} )

例子:

file(GLOB_RECURSE 变量名 CONFIGURE_DEPENDS "src/*.hpp" "src/*.cpp" "src/*.ui")
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES ${变量名})
add_executable(       "${PROJECT_NAME}"            ${变量名}
                                                   "res/res.qrc")

CMakeLists.txt例子:

# Qt对cmake版本的最小要求
cmake_minimum_required(VERSION 3.5)
# 用于指定项目的名称
project(<projectName> VERSION 0.1 LANGUAGES CXX)

#自动将当前的源代码和构建目录添加到include路径中
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# 打开Qt特有的编译器需要打开,默认是关闭的
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

# Qt6 对C++版本推荐至少17
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 寻找Qt的库(Qt需要的组件)
#REQUIRED:必须找到该库,找不到就报错
#COMPONENTS:从库中找子模块,此处找的是Widgets

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets )
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

#将所有文件保存在PROJECT_SOURCES变量中
set(PROJECT_SOURCES
        main.cpp
        widget.cpp
        widget.h
        widget.ui
)

# 链接PROJECT_SOURCES的内容到当前项目
add_executable(projectName  ${PROJECT_SOURCES})
# 链接库到当前项目
target_link_libraries(projectName PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

最后执行下面脚本,进行创建build目录、生成Makefile、编译连接、安装的操作。

mkdir build
cd build
cmake ../
make
make install
./项目名

 代码修改后编译:

make
./项目名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值