当前位置: 首页 > news >正文

一个简单的cmake模板(C++)

链接:小黑屋1024 / Python · GitCode

#对cmake版本的要求,此处不低于3.16
cmake_minimum_required(VERSION 3.16)

#项目名称:此处为test
project(test)

#设置编译生成产物输出路径
##可执行文件exe
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
##dll
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) 
##lib
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) 
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
#

#设置C++标准
#SET(CMAKE_CXX_STANDARD 11)
#SET(CMAKE_CXX_STANDARD_REQUIRED 11)

#设置Qt属性
#set(CMAKE_AUTOUIC ON)
#set(CMAKE_AUTOMOC ON)
#set(CMAKE_AUTORCC ON)


#打包所有源文件
file(GLOB SOURCES "src/*.*")
#基于上面的sources过滤不要的文件
#file(GLOB_RECURSE REMOVE_SOURCES "src/notuse.cpp")
#list(REMOVE_ITEM SOURCES ${REMOVE_SOURCES})
#

#产物生成
##生成可执行文件
add_executable(${PROJECT_NAME} ${SOURCES})
##生成动态库
##保证没有导出符号也生成lib文件
#set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
#add_library(${PROJECT_NAME} SHARED ${SOURCES})
##生成静态库
#add_library(${PROJECT_NAME} STATIC ${SOURCES})
#



#库链接
#target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/externals/include)
#target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/externals/lib/libtest.so)
#


#产物打包install 
##安装产物
# install(TARGETS ${PROJECT_NAME}  
#         CONFIGURATIONS Release
#         ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/install/Release
#         LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/install/Release
#         RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/install/Release
#         CONFIGURATIONS Debug
#         RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/install/Debug
#         ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/install/Debug
#         LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/install/Debug)

##安装指定文件
# install(FILES ${PROJECT_SOURCE_DIR}/src/install.h 
#         DESTINATION ${PROJECT_SOURCE_DIR}/install/include)

##安装目录,并过滤文件,支持正则和通配
###局部匹配,表示src/installDir下所有文件名包含install的文件
# install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/installDir DESTINATION ${PROJECT_SOURCE_DIR}/install/include/
#         FILES_MATCHING REGEX "test")
###完全匹配,表示src/installDir下所有文件名包含install的文件
# install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/installDir DESTINATION ${PROJECT_SOURCE_DIR}/install/include/
#         FILES_MATCHING PATTERN "otherfile.h")
#

介绍

这是一个基于CMakeLists.txt创建的C++模板项目。

它提供了固定的目录结构:

src目录存放源码

externals目录存放依赖(库),

bin目录存放生成的产物

install目录存放打包安装内容

通过clone这个项目,可以快速的使用CMakeLists.txt文件,选择与项目相关的配置(默认提供最简单的可执行文件所需要的CMake配置),从而快速开始代码编辑,而不是到处寻找cmake命令

目前支持的cmake内容有:

1.项目名(project)

2.cmake版本要求(cmake_minimum_version)

3.生成产物(add_executable、add_library)

4.源文件打包及过滤(file)

5.生成产物路径设置(EXECUTABLE_OUTPUT_PATH、CMAKE_RUNTIME_OUTPUT_DIRECTORY、CMAKE_LIBRARY_OUTPUT_DIRECTORY、CMAKE_ARCHIVE_OUTPUT_DIRECTORY)

6.产物安装(target、指定文件FILES、指定目录DIRECTORY)

7.链接动/静态库

8.C++标准选择

9.Qt属性设置

当然,有时间的话还会继续完善其他复杂的功能,比如版本号、导出等,同时,如果你有兴趣的话,欢迎你的pr。

如何使用

1.首先,这是一个模板,src里的内容可以完全忽略,也就是说如果你配置好你的Cmake内容的话,可以将src的文件清空,并开始创建自己的源文件。

2.完成源码编写后,可以在根目录下使用:

cmake -B build -S .

命令创建项目目录和项目文件,然后切到build目录下执行:

cmake --build . [--config=Release/Debug]

进行构建,其中[--config=Release/Debug]表示配置构建的版本,可以省略。

3.最后,如果一切顺利的话,你可以在bin目录下看到你的构建产物。

http://www.dtcms.com/a/5358.html

相关文章:

  • pytorch中的transpose用法
  • HDPE硅芯管强度高,抗压抗张和抗冲击强,外层不需其它套管
  • NFS远程文件共享系统!
  • k8s-learning-why we need pod
  • 学习git后,真正在项目中如何使用?
  • 李宏毅bert记录
  • 第三十章 控制到 XML 模式的映射 - Array of Classname
  • MySQL 报错 You can‘t specify target table for update in FROM clause解决办法
  • Bypass open_basedir
  • @ApiImplicitParam注解使用说明
  • css实现姓名两端对齐
  • 基于ssm社区管理与服务的设计与实现论文
  • ChatGPT的常识
  • 微搭低代码实现登录注册功能
  • 德语 Alt 代码表
  • 国基北盛 openstack 云平台搭建保姆级步骤
  • Java----冒泡排序、选择排序、插入排序、快速排序、堆排序
  • LangChain 25: SQL Agent通过自然语言查询数据库sqlite
  • 004 Windows NTFS文件夹权限
  • 云计算大屏,可视化云计算分析平台(云实时数据大屏PSD源文件)
  • PHP基础(4)
  • 系统架构设计师教程(二)计算机系统基础知识
  • 《微信小程序开发从入门到实战》学习四十七
  • 2023 巅峰之作 | AIGC、AGI、GhatGPT、人工智能大语言模型的崛起与挑战
  • 消息队列使用指南
  • Mac电脑投屏AirServer 2024怎么下载安装激活许可期限
  • docker 资源控制
  • Halcon一维码识别
  • Kubernetes - 为什么 K8S 在容器里不能调用自己?
  • IP地址定位技术为网络安全建设提供全新方案