# QtProjects **Repository Path**: dense-breath/qt-projects ## Basic Information - **Project Name**: QtProjects - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-01 - **Last Updated**: 2025-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: cmake, Cpp ## README # 说明 此仓库主要用于日常写一些没头脑的代码,包括: 1. 一些Qt功能的验证 2. 一些CMake使用验证 3. 基于gtest的单元测试学习 4. 一些个人经验和总结,基本想到什么写什么 # 编译构建环境 1. Visual Studio 2022 2. Qt5,我用的是5.15.2 3. CMake 和 Ninja,用VS2022安装后自带的cmake和ninja即可。 # 其他环境 1. VS Code 插件 1. C++:调试必备 2. CMake Tools:免去的launch、task配置,直接基于CMake构建、调试 3. clangd:能够集成C++语言服务、clang-tidy、clang-format 2. LLVM:包括clangd.exe,clang-format.exe,clang-tidy.exe,可以去github下载LLVM安装包 # CMake ## 生成器 CMake支持多种生成器,以Ninja和Ninja Multi Config举例,这两者的主要区别在于后者支持多配置管理。 MSVC也是多配置生成器,可以在Visual Studio里面选择Debug、Release或者自定义配置,但默认的vcxproj配置起来还是有些不方便,特别是多人协作开发时,这个文件冲突不好解决,尤其涉及filter筛选器时,自动合并可能会导致filter失效。 因此,自从开始使用CMake后,我都是尽量通过CMake去生成sln解决方案,或者直接用vscode,只有在调试疑难问题时,使用VS。 # 代码组织结构的想法 ## 目录 目录结构一般没有固定的说法,参考那些优秀的开源项目或者大神就行了,个人比较喜欢本仓库的这种模式: | 文件夹 | 说明 | | ------- | ------------------------------------------------- | | src | 源码 | | include | 对外暴露的头文件 | | bin | 编译产生的二进制文件 | | lib | 库文件 | | pack | 打包相关的文件,比如windows上的iss脚本,bat脚本等 | 在使用多配置生成器时,一般会在bin、lib下面多一层配置文件夹,比如:Debug、Release,这样在切换Debug、Release编译时,不用清理原来的obj文件,能够快速切换,使用单配置生成器则只能清理掉上次的obj文件重新编译。 根目录一般除了CMakeLists.txt之外,会有很多配置文件,比如.clang-format、.clang-tidy,Git的一些配置文件等。 ## 编译调试环境 一般的IDE都支持把某个可执行的目标直接启动作为调试选项,这样就要求编译后,生成exe目录能够满足运行环境,而项目上同时会依赖一些三方库,还会依赖一些资源,因此一般都会把所有编译的二进制、依赖的资源文件、第三方dll都放到编译生成的目录下面,这样就能直接启动编译目标,比较方便。 上面的做法在windows上比较合适,因为windows的dll搜索就是优先搜索exe所在目录,把运行需要的文件都放到一个目录,类似于形成了一个绿色版,配合使用inno setup,直接将Release目录打包形成安装包。