一个简单的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目录下看到你的构建产物。

相关推荐

  1. 一个简单cmake模板(C++)

    2023-12-16 03:34:03       46 阅读
  2. Visual Studio C++ 一个简单示例

    2023-12-16 03:34:03       12 阅读
  3. 如何使用 CMake 来构建一个包含子目录 C++ 项目

    2023-12-16 03:34:03       36 阅读
  4. 编写一个简单服务和客户端(C++)

    2023-12-16 03:34:03       39 阅读

最近更新

  1. vue项目在window编译打包没问题linux编译打包报错

    2023-12-16 03:34:03       0 阅读
  2. vue 环境变量那些事

    2023-12-16 03:34:03       0 阅读
  3. R语言学习笔记5-数据结构-多维数组

    2023-12-16 03:34:03       0 阅读
  4. Mongodb地理信息数据查询

    2023-12-16 03:34:03       1 阅读
  5. uniapp实现图片懒加载 封装组件

    2023-12-16 03:34:03       1 阅读
  6. 有关区块链的一些数学知识储备

    2023-12-16 03:34:03       1 阅读
  7. MICCAI 2023 List of Papers

    2023-12-16 03:34:03       1 阅读

热门阅读

  1. Zabbix监控网站

    2023-12-16 03:34:03       34 阅读
  2. idea注释高亮提示

    2023-12-16 03:34:03       46 阅读
  3. 知识迁移加持下的自监督学习

    2023-12-16 03:34:03       41 阅读
  4. 第19节:Vue3 在模板中展开时的注意事项

    2023-12-16 03:34:03       44 阅读
  5. 使用Linux命令修改服务器时间及设置时区

    2023-12-16 03:34:03       45 阅读
  6. 【Python 千题 —— 基础篇】整数输入

    2023-12-16 03:34:03       43 阅读
  7. 数组练习之:二分查找法

    2023-12-16 03:34:03       36 阅读