美文网首页
CMake通用基础模板

CMake通用基础模板

作者: leon0514 | 来源:发表于2024-07-08 08:38 被阅读0次

CMake模板

### CMakeLists 通用基础模板
# 项目目录结构
# .
# ├── CMakeLists.txt
# ├── README.md
# ├── build
# ├── src
# │   ├── main.cpp
# │   └── operator
# │       ├── add.cpp
# │       ├── add.hpp
# │       ├── sub.cpp
# │       └── sub.hpp
# └── workspace
#     ├── bin
#     └── lib
cmake_minimum_required(VERSION 3.9)
project("Application")

#设定编译参数
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE "Release")

# 查找所有编译文件
file(GLOB_RECURSE CPP_SRC_LIST ${PROJECT_SOURCE_DIR}/src/*.cpp)
file(GLOB_RECURSE CC_SRC_LIST  ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB_RECURSE C_SRC_LIST   ${PROJECT_SOURCE_DIR}/src/*.c)
list(APPEND SRC_LIST ${CPP_SRC_LIST} ${CC_SRC_LIST} ${C_SRC_LIST})

# 根据需求删除不需要编译的文件
# 按照功能将不同的文件放在不同的文件夹中,如果编译时不需要该功能可直接排除该文件夹中的所有文件
# file(GLOB_RECURSE OPERATOR_FILE_LIST ${PROJECT_SOURCE_DIR}/src/operator/*.cpp)
# list(REMOVE_ITEM  SRC_LIST ${OPERATOR_FILE_LIST})
# message(${SRC_LIST})

# 设定头文件路径
include_directories(${PROJECT_SOURCE_DIR}/src)
# include_directories("路径")

# 设置库文件生成路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/workspace/lib)
# 设置可执行文件生成路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/workspace/bin)

# 设置库名称
set(LIBRARY_NAME "xxx")
set(STATIC_LIBRARY_NAME ${LIBRARY_NAME}_static)
set(SHARED_LIBRARY_NAME ${LIBRARY_NAME}_shared)

set(EXEC_LIBRARY_NAME "pro")


# 设置需要连接的库文件 可以按照所在文件夹分类
# set(LIBS1_PATH "/path/to/libs1")
# link_directories(${LIBS1_PATH})
# set(LIBS1 a b c)

# set(LIBS2_PATH "/path/to/libs1")
# link_directories(${LIBS2_PATH})
# set(LIBS2 d e f)

# 生成静态库
add_library(${STATIC_LIBRARY_NAME} STATIC ${SRC_LIST})
set_target_properties(${STATIC_LIBRARY_NAME} PROPERTIES OUTPUT_NAME ${LIBRARY_NAME})
# 链接库文件
# target_link_libraries(${STATIC_LIBRARY_NAME} ${LIBS1} ${LIBS2})

# 生成动态库
add_library(${SHARED_LIBRARY_NAME} SHARED ${SRC_LIST})
set_target_properties(${SHARED_LIBRARY_NAME} PROPERTIES OUTPUT_NAME ${LIBRARY_NAME})
# 链接库文件
# target_link_libraries(${SHARED_LIBRARY_NAME}  ${LIBS1} ${LIBS2})

# 生成可执行文件
add_executable(${EXEC_LIBRARY_NAME} ${SRC_LIST})
# 链接库文件
# target_link_libraries(${EXEC_LIBRARY_NAME}  ${LIBS1} ${LIBS2})

说明

项目目录结构基于

.
├── CMakeLists.txt
├── README.md
├── build
├── src
│   ├── main.cpp
│   └── operator
│       ├── add.cpp
│       ├── add.hpp
│       ├── sub.cpp
│       └── sub.hpp
└── workspace
    ├── bin
    └── lib

根据需求移除部分文件的编译
按照功能将不同的文件放在不同的文件夹中,如果编译时不需要该功能可直接排除该文件夹中的所有文件

# 根据需求删除不需要编译的文件
# 按照功能将不同的文件放在不同的文件夹中,如果编译时不需要该功能可直接排除该文件夹中的所有文件
file(GLOB_RECURSE OPERATOR_FILE_LIST ${PROJECT_SOURCE_DIR}/src/operator/*.cpp)
list(REMOVE_ITEM  SRC_LIST ${OPERATOR_FILE_LIST})
# message(${SRC_LIST})

根据需求设置编译参数

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE "Release")
```根据需求设置编译出来的库名称
```CMAKE
set(LIBRARY_NAME "xxx")

设置需要链接的库文件和所在目录

# 设置需要连接的库文件 可以按照所在文件夹分类
set(LIBS1_PATH "/path/to/libs1")
link_directories(${LIBS1_PATH})
set(LIBS1 a b c)

set(LIBS2_PATH "/path/to/libs1")
link_directories(${LIBS2_PATH})
set(LIBS2 d e f)

# 写在最后
target_link_libraries(${EXEC_LIBRARY_NAME}  ${LIBS1} ${LIBS2})

相关文章

  • cmake基础模板

    cmake概述 因为公司的某个项目,接触了cmake,发现果然比make语法更改高级,且更加智能和好用!因此,写此...

  • CMake 简介和 CMake 模板

    转载自我的博客:CMake 简介和 CMake 模板。 如果你用 Linux 操作系统,使用 cmake 会简单很...

  • C++ helloworld 模板

    依赖gcc、 cmake 1. 模板编写 main.cpp 2. cmake 编写 CMakeLists.txt ...

  • C程序生成工具

    (1)makefile常用模板:(2)automake和autoconf (3)cmake

  • 织梦cms模板下载:集团企业通用织梦模板

    模板名称:集团企业通用织梦模板 模板介绍:该模板适用于集团企业通用织梦模板,网站整体以天蓝色为主,搭配白色,看上去...

  • C++ 泛型编程

    模板(Template) 简单的说,模板是一种通用的描述机制,当使用模板时允许使用通用类型来定义函数或类等。模板引...

  • Binary search 归类

    用这个通用模板

  • CMake基础编译方式

    【1】CMake基础CMake是一种跨平台编译工具 CMake主要是编写CMakeLists.txt文件 通过cm...

  • cmake基础

    CMake菜谱(CMake Cookbook中文版)[https://www.bookstack.cn/read/...

  • 二分查找模式

    二分查找通用的模板int mid = (left + right) / 2容易溢出 二分查找的通用模板 使用“左边...

网友评论

      本文标题:CMake通用基础模板

      本文链接:https://www.haomeiwen.com/subject/qvbocjtx.html