CMake 教程CPP开发 如何组织多个目录项目代码

CMake 教程CPP开发 如何组织多个目录项目代码


我们在学习过程中,经常会运行一些小的demo 进行验证,验证语言特性,在我们学习新的一门语言时。
那么我们怎么高效的组织自己的代码呢,这里分享一个我学习网上别人优秀项目得到的一个组织多个项目
代码的CMakefie 文件编写一个经验,这里分享给大家。


1.总结项目结构


我们的项目结构如下图所示。

具体操作过程如下:
首先我们的项目时基于Clion 定义的工程,visual studio CMake 项目理应也是一样的。手动创建CMaeLists.txt 也是一样的。

创建项目 designpatterndemo 创建根目录下的 CMakeLists.txt 创建两个目录分别为:001_Interface_Segregation_Principle
002_builder

每个目录创建 CMakeLists.txt  先不管每个文件里面的内容。


2.外层CMakeLists.txt 编写
cmake_minimum_required(VERSION 3.28)
project(desingpattern C CXX)


set(CMAKE_CXX_FLAGS "-std=c++11")

add_subdirectory(001_Interface_Segregation_Principle)
add_subdirectory(002_builder)
3.内部子目录 CMakeLists.txt 编写


001目录下的 CMakeLists.txt

set_source_files_properties(
        main.cpp
        test.cpp
        PROPERTIES COMPILE_FLAGS -std=c++17
)

add_executable(main main.cpp)
add_executable(test test.cpp)

002 目录下的 CMakeLists.txt

set_source_files_properties(
        life_without_builder.cpp
        builder.cpp
        fluent_builder.cpp
        PROPERTIES COMPILE_FLAGS -std=c++17
)

add_executable(fluent_builder fluent_builder.cpp)
add_executable(life_without_builder life_without_builder.cpp)
add_executable(builder builder.cpp)

并且每个目录下面创建对应文件名称,建议每个cpp 文件名称不一样,并且定义对应的 
main 方法(此时你可以定义一个目标最简单的hello world 程序)
然后就可以编译,顺利的话,编译应该能通过


4.如何增加一个新的目录操作?


例如,我学设计模式,我将每个设计模式的代码分放到一个单独的目录里面,例如后面我可能学习 proxy 设计模式,
我要加个 003_proxy 目录,那么我怎么操作才能编译通过呢?

新建一个与001,002 同级别的目录 003_proxy ,同时修改,在外层的 CMakeLists.txt 增加 

add_subdirectory(003_proxy) 

即可,简单吧?这样外出就可以感知到新的目录 003_proxy 了。


5.如何在一个目录里面增加一个 cpp 可执行文件?


创建 003_proxy 目录后,我们就可以在这个目录下编写proxy 设计模式的可执行代码案例,那么如何修改 CMakeLists.txt?
能让每次编译自动生成对应的可执行文件
新的目录创建对应的 CMakeLists.txt

修改目录下的CMakeLists.txt,增加内容:

set_source_files_properties(
        proxy.cpp
        PROPERTIES COMPILE_FLAGS -std=c++17
)

add_executable(proxy proxy.cpp)

增加一个 proxy.cpp ,最开始内容可以是一个只有输出helloworld 的程序

例如:

#include <iostream>

using namespace std;

int main(){
    cout << "hello world!" << endl;
    return 0;
}

然后执行build 整个项目。debug 如果有编译错误。

操作后整个项目层级结构如下图所示:

6.总结


这个CMake项目模板,对于学习一门新的语言来说,整理代码组织代码非常有好处,这里分享给大家。
 

相关推荐

  1. 开源项目Cesium3DTilesConverter的OSGBConvert.cpp代码分析

    2024-05-03 04:32:03       63 阅读
  2. 如何在python程序内连续运行代码

    2024-05-03 04:32:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-03 04:32:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-03 04:32:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-03 04:32:03       82 阅读
  4. Python语言-面向对象

    2024-05-03 04:32:03       91 阅读

热门阅读

  1. Redis 实现分布式Session 登录相关细节

    2024-05-03 04:32:03       29 阅读
  2. VSCode 配置 Qt 开发环境

    2024-05-03 04:32:03       32 阅读
  3. 模拟实现将字符串转化为整形

    2024-05-03 04:32:03       36 阅读
  4. Matlab基本语法

    2024-05-03 04:32:03       32 阅读
  5. js如何把json列表转成数组

    2024-05-03 04:32:03       34 阅读
  6. 第八周学习笔记DAY.5-实用类介绍

    2024-05-03 04:32:03       36 阅读
  7. [C++基础学习]----03-程序流程结构之跳转语句详解

    2024-05-03 04:32:03       31 阅读