多目录CMAKE文件的编写

前言

  对于单文件来说一个CMakeLists.txt文件即可,但是大多数项目的文件都不可能只有一个文件,因此介绍下在多目录下CMakeLists.xtx文件是如何编写的

思考

  对于多目录CMAKE文件的编写应该怎样写呢?我们知道单目录文件只需要一个CMakeLists.txt文件即可,那么多目录是不是应该有多个CMakeLists.txt文件?
  是的多目录CMAKE文件在每个目录都有一个CMakeLists.txt文件并且还有一个根目录下的CMakeLists.txt文件,通过根目录下的CMakeLists.txt来链接各个目录下的CMakeLists.txt.

准备

  首先准备下需要的文件

  然后编写各个文件的代码(将以静态库方式进行连接)

  • 根目录cmake
cmake_minimum_required(VERSION 3.25)
project(test)

#包含各个目录的头文件
include_directories(${PROJECT_SOURCE_DIR}/Game)
include_directories(${PROJECT_SOURCE_DIR}/Login)
include_directories(${PROJECT_SOURCE_DIR}/Register)
include_directories(${PROJECT_SOURCE_DIR}/Window)

#连接子目录的CMakeLists.txt文件
add_subdirectory(Game)
add_subdirectory(Login)
add_subdirectory(Register)
add_subdirectory(Window)

#连接静态库
link_libraries(Game)


#生成可执行文件
add_executable(game main.cpp)

  • Window目录Cmake文件
cmake_minimum_required(VERSION 3.25)
project(Window)

#搜索源文件
aux_source_directory(./ SRC)

#编译静态库文件

add_library(Window ${SRC})
  • Login目录Cmake文件
cmake_minimum_required(VERSION 3.25)
project(Login)

#搜索源文件
aux_source_directory(./ SRC)

#编译静态库文件

add_library(Login ${SRC})
  • Register目录Cmake文件
cmake_minimum_required(VERSION 3.25)
project(Register)

#搜索源文件
aux_source_directory(./ SRC)

#编译静态库文件

add_library(Register ${SRC})
  • 各个cpp文件
#include "game.h"

void start()
{
    createWindow();
    register_Account();
    login();
    while (true)
    {
        play();
        system("pause");
    }
}

void play()
{
    std::cout << "开始游戏 " << std::endl;
}
#include "login.h"

void login()
{
    std::cout << "登录" << std::endl;
}
#include "register.h"

void register_Account()
{
    std::cout << "注册账号" << std::endl;
}
#include "window.h"

void createWindow()
{
    std::cout << "创建游戏窗口" << std::endl;
}

开始构建

  在当前终端下输入cmake -B build 生成build目录以及相关文件
在这里插入图片描述
  然后输入cmake --build build
在这里插入图片描述
可以看到相应的lib文件和可执行文件已经生成
进入Debug目录执行可执行文件
在这里插入图片描述
可以看到程序已经正常执行,此时就是把除main.cpp文件以外的cpp文件删除也能正常运行,因为其他cpp文件已被打包为了静态库加载到可执行程序里了
在这里插入图片描述
在这里插入图片描述
可以看到其他cpp文件已被删除
运行程序
在这里插入图片描述

结语

  本次记录了如何编写多目录下cmake文件的编写,对于其他cpp文件在生成静态库以后可删可不删,不会影响程序的运行.

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值