首页 > 系统相关 >windows--cmake与c++的使用教程(4)

windows--cmake与c++的使用教程(4)

时间:2022-11-15 20:11:49浏览次数:63  
标签:src cmake 文件 windows 代码 c++ IOCPTCP include

1 概述

本节目标: 编写创建可执行程序exe的cmake脚本

2 核心代码

  • add_executable命令用于生成可执行程序

3 用法

add_executable(项目名 代码文件) 

如果有多个代码文件 可以追加代码文件,例如

add_executable(项目名 代码文件 代码文件2 代码文件3) 

5 一个范例

  • 下面将演示, 使用main.cc代码文件,创建一个基于可执行程序exe的cmake脚本
cmake_minimum_required(VERSION 3.20)
# 项目名称
project(cmake_library)
# 因为创建项目需代码文件,这里,我们可创建一个空的文件**main.cc**与CMakeLists.txt位于同级目录src下。

# 指定源文件。 这里创建 src_file, 用于保存代码源文件
set (   src_file 
        ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc
    )

# 创建动态库, 第一个参数: 项目名称, 第二个参数:代码文件
add_executable(cmake_library ${src_file})

6 多文件管理

  • 通常有头文件和源文件,甚至还有inl文件,例如下面的目录结构,
.
│  CMakeLists.txt
│  
├─include
│      IOCPTCP.cpp
│      IOCPTCP.h
│      IOCPTCP.hpp
│      IOCPTCP.inl
│      
└─src
        main.cc

这里仅仅是创建了空文件,文件内容为空, 用于构建cmake脚本时通过语法
至于项目能否顺利编译,这取决于代码文件的语法,与cmake脚本语法无关

  • 瞧,有这么多文件需要处理,cmake怎么处理呢?脚本如下
cmake_minimum_required(VERSION 3.20)
# 项目名称
project(cmake_library)
# 因为创建项目需代码文件,这里,我们可创建一个空的文件**main.cc**与CMakeLists.txt位于同级目录src下。

# 指定源文件。 这里创建 src_file, 用于保存代码源文件
set (   src_file 
        ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc
    )
    
# include目录下的文件
set (   include_file 
        ${CMAKE_CURRENT_SOURCE_DIR}/include/IOCPTCP.cpp
		${CMAKE_CURRENT_SOURCE_DIR}/include/IOCPTCP.h
		${CMAKE_CURRENT_SOURCE_DIR}/include/IOCPTCP.hpp
		${CMAKE_CURRENT_SOURCE_DIR}/include/IOCPTCP.inl
    )

# 创建动态库, 第一个参数: 项目名称, 第二个参数:代码文件, 第三个参数: 代码文件
add_executable(cmake_library ${src_file} ${include_file})
  • 回到VS Code, 打开命令行, 构建脚本, 执行下面的语法
> cmake : configure
  • 结果

可见已经生成成功

8 查看

  • 可使用Vs2019打开解决方案cmake_library.sln, 查看项目属性

标签:src,cmake,文件,windows,代码,c++,IOCPTCP,include
From: https://www.cnblogs.com/pandamohist/p/16893713.html

相关文章

  • Windows Communication Foundation FAQ
    这是两个WCF的FAQ文章,值得初学者好好看看:​​WindowsCommunicationFoundationFAQquickstarterPart1​​​​WindowsCommunicationFoundationFAQquickstarter......
  • 一个很好用的 C++ 高精度整数板子
    点击查看代码typedeflonglongll;typedeflongdoubleld;typedefcomplex<ld>pt;constintMOD=1e9+7;constldPI=acos(-1.L);template<classT>struc......
  • C++类的内存结构
     第一种这个类是个空类 sizeof会占用一个字节 newt也是占用一个字节但作为其他类的成员变量可能会占用1-2-4-8字节这个是类的内存对齐导致 第2种这......
  • windows10单机使用mysql8实现主从复制
    一、在windows10下开启两个MySQL实例,端口3306作为主服务器,端口3307作为从服务器,具体安装参看:https://www.cnblogs.com/simon-xie/p/13763145.html二、主服务器配置1、my.......
  • windows--cmake与c++的使用教程(3)
    概述本文基于前文环境本节目标:编写用于创建c++动态库的cmake脚本1创建动态库关键语法:add_library2创建动态库核心脚本解释add_library(项目名称SHARED代......
  • windwos cmake与c++的使用教程(2)
    概述本文基于前文环境一个基于cmake的hellocmake本节目标:使用VSCode创建cmake脚本文件,输出hellocmake1准备因为cmake执行过程可能有新的文件生成,所以,这里新......
  • windows安装程序无法将windows配置为在此计算机上运行
    复现今天在安装Win1122H2官方原版系统的时候突然出现了这个错误解决办法原因我也不清楚,但是从网上找到了解决办法。1、修改注册表shift+F10调出cmdcmd中输入rege......
  • C++——各版本新特性
    参考:https://www.cnblogs.com/yrm1160029237/p/14246166.htmlC++11auto关键字decltype关键字nullptr字面值constexpr关键字for(declaration:expression)Lambda表......
  • C/C++ Qt MdiArea 多窗体组件应用
    MDI多窗体组件,主要用于设计多文档界面应用程序,该组件具备有多种窗体展示风格,其实现了在父窗体中内嵌多种子窗体的功能,使用MDI组件需要在UI界面中增加mdiArea控件容器,我们所......
  • Windows 11在窗口游戏中增加了对自动HDR、VRR的支持
    Windows112022更新今天发布,虽然对于大多数PC来说,它主要是幕后更新,但游戏玩家有一些新功能值得期待。首先,微软正在增加对自动HDR、VRR(可变刷新率)和更好的窗口游戏延迟......