美文网首页
基于CMake+Clion的Qt工程目录管理

基于CMake+Clion的Qt工程目录管理

作者: 仙人掌__ | 来源:发表于2024-02-22 14:59 被阅读0次

一、背景

基于CMake的文件目录结构需要有一个统一的规范,方便后续项目的管理及提高开发效率,调研了网上一些开源项目的目录结构后做如下的总结。主要从工程目录结构、工程文件引入、三方库管理几个方面进行总结

二、工程目录结构

1、工程目录结构

project_name
├── deploy
├── 3rd
├── src
├── resources
├── LICENSE
├── CMakeLists.txt
├── main.cpp
├── MainWindow.h
├── MainWindow.cpp
├── MainWindow.ui
├── .gitignore
├── vcpkg.json
  • deploy : 用于存放部署、交付的文件,其包含本项目最总生成的可执行文件。

  • 3rd : 用于存放第三方库,每个第三库以单独目录的形式组织在3rdparty目录下。其中每个第三方目录下又有 includelib 分别存放第三方库的头文件和库文件。

  • src : 存放源码文件,以及内部头文件。

  • LICENSE : 版权信息说明。

  • CMakeLists.txt : cmake文件。

  • vcpkg.json :三方库管理

2、编译文件自动化管理

基于CMake+Clion工程目录文件管理主要在如下几种使用场景:

1、新建文件时可以自动添加文件到CMakeLists.txt中,但删除时需要手动从CMakeLists.txt中移出

2、拖拽从外面拖拽源代码文件到Clion中需要手动添加到CMakeLists.txt中,删除时也一样

特别是第2点对于引入包含很多代码的外部开源代码是非常不方便的。这里按照如下方式自动化管理源文件,如下的cmake代码代表src目录下(包括子目录)所有.h .cpp,.ui文件自动被检索出来存入PROJECT_SOURCES变量,这样以任意方式往src目录及其子目录中添加cpp文件都可以被自动关联了

include_directories(src)
set(SRC_DIR ${CMAKE_SOURCE_DIR}/src)
# 将src目录(及子目录下)的所有.h .cpp,.ui文件遍历出来存入SRC_SOURCES变量
file(GLOB_RECURSE SRC_SOURCES
        "${SRC_DIR}/*.h"
        "${SRC_DIR}/*.cpp"
        "${SRC_DIR}/*.ui"
)
LIST(APPEND PROJECT_SOURCES ${SRC_SOURCES})

Tips:新增文件后需要Tools->CMake->Reload CMake Project,否则可能出现找#include 提示找不到文件的现象。

三、三方库管理

1、vcpkg

vcpkg是Microsoft推出的免费的c/c++桌面端跨平台包管理器,配合CMake它可以非常方便在项目中引入三方库。如下为在项目中通过vcpkg引入aws微软云存储库的步骤:

  • 安装vckpg(如果未安装)

MacOS14下安装

brew install pkg-config
brew install nasm
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh

Windows10下安装

要先安装Visual Studio,选择如下组件。否则无法使用vcpkg。

image.png
git clone https://github.com/Microsoft/vcpkg.git
cd C:\Users\zsz\CLionProjects\AirBrushStudioQt
C:\Users\zsz\Developer\vcpkg install
  • 添加三方库依赖信息

在项目根目录下创建vcpkg.json文件

{
  "dependencies": [
    {
      "name": "aws-sdk-cpp",
      "version>=": "1.11.169"
    }
  ],
  "builtin-baseline": "01acfdfde3ed99280d3883a8fccd5fa4408f5214",
  "overrides": [
    {
      "name": "aws-sdk-cpp",
      "version": "1.11.169"
    }
  ],
  "name": "vcpkg",
  "version": "1.0"
}

builtin-baseline: 基于vcpkg的某一次提交的SHA值,只有配置这个后才可以指定三方库的特定版本。

1、"dependencies"中配置"version>="字段,指定最小版本,每次重新编译时会使用不小于某版本的最新版本

2、"overrides"中配置version字段,指定具体版本,需配置最小版本且要大于等于最小版本才会有效

具体文档参考官网文档

建议引用三方库最好指定具体版本,即上述1、2步骤中的全部都配置

  • 安装三方库
cd /Users/zhuangshanzhi/Developer/AirBrushStudioCrossPlatform
/Users/zhuangshanzhi/Developer/vcpkg/vcpkg install

备注:这里最好手动调用vcpkg命令安装vcpkg.json里面的三方库,因为Clion内置的cmake版本和vcpkg内置的cmake的版本不一致,编译可能会出错(例如ffmpeg库).

  • 刷新工程配置

首先在Clion-->Settings-->Build,Exception,Deployment-->CMake-->CMake Options 下添加

-DCMAKE_TOOLCHAIN_FILE=/Users/zhuangshanzhi/Developer/vcpkg/scripts/buildsystems/vcpkg.cmake

换成自己电脑上的vcpkg路径

然后Tools-->CMake-->Reload Cache And Reload Project

相关文章

网友评论

      本文标题:基于CMake+Clion的Qt工程目录管理

      本文链接:https://www.haomeiwen.com/subject/wairaltx.html