当前位置: 首页 > 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目录下看到你的构建产物。

相关文章:

  • 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源文件)
  • 每天少看1小时手机,就可能有神奇效果
  • 王缉慈|迈向近零的产业集群需加强利益相关者合作行动
  • 失智老人有两个儿子却欠费住养老院两年多,法检合力指定监护人
  • 上影节开幕影片《酱园弄·悬案》,陈可辛执导,章子怡主演
  • 俄罗斯哈巴罗夫斯克市首次举办“俄中论坛”
  • 国家话剧院上海演出季7月重启,《大宅门》等5部大戏来沪