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

cmake笔记

cmake_minimum_required (VERSION 2.8)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project (demo)aux_source_directory(. SRC_LIST)#扫描.下的所有c\cpp文件并生成list放进SRC_LIST
#等效于set( SRC_LIST	 ./main.c	 ./testFunc1.c	 ./testFunc.c)include_directories (test_func test_func1)#添加多个指定头文件的搜索路径
aux_source_directory (test_func SRC_LIST)#添加目录test_func下的C\CPP文件
aux_source_directory (test_func1 SRC_LIST1)add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
#指定一个包含CMakeLists.txt和代码文件所在的目录set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#EXECUTABLE_OUTPUT_PATH是默认常量,把二进制文件放到根目录下的bin中find_library(TESTFUNC_LIB testFunc HINTS ${PROJECT_SOURCE_DIR}/testFunc/lib)
#在指定目录下找库,并把库的绝对路径放到变量里
#参1是保存到的变量;参2是要找的库名称,不包含前缀和扩展名;参3告诉优先在后面的目录找库,而不是环境变量,如果改成PATH则优先在环境变量里找
target_link_libraries (main ${TESTFUNC_LIB})#把目标文件与库进行链接add_executable(main ${SRC_LIST} ${SRC_LIST1})#以下是生成库文件,不生成可执行文件
cmake_minimum_required (VERSION 3.5)project (demo)set (SRC_LIST ${PROJECT_SOURCE_DIR}/testFunc/testFunc.c)add_library (testFunc_shared SHARED ${SRC_LIST})#库名称 动态
add_library (testFunc_static STATIC ${SRC_LIST})set_target_properties (testFunc_shared PROPERTIES OUTPUT_NAME "testFunc")
set_target_properties (testFunc_static PROPERTIES OUTPUT_NAME "testFunc")
#set_target_properties: 设置最终生成的库的名称,还有其它功能,如设置库的版本号等set (LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)#库输出路径,根目录下lib

常见的 CMake 编译控制变量

变量名

含义

CMAKE_CXX_STANDARD

设置 C++ 编译标准(如 11、14、17、20)

CMAKE_CXX_STANDARD_REQUIRED

是否强制使用该标准(ON 推荐)

CMAKE_CXX_EXTENSIONS

是否启用 GNU 扩展(ON 为 -std=gnu++17,OFF 为 -std=c++17)

CMAKE_C_STANDARD

设置 C 编译标准(如 99、11)

CMAKE_C_STANDARD_REQUIRED

是否强制使用该 C 标准

CMAKE_POSITION_INDEPENDENT_CODE

为目标编译为 PIC(常用于构建共享库)

CMAKE_BUILD_TYPE

构建类型(如 Debug、Release)

CMAKE_RUNTIME_OUTPUT_DIRECTORY

可执行文件的输出路径

CMAKE_LIBRARY_OUTPUT_DIRECTORY

动态库的输出路径

CMAKE_ARCHIVE_OUTPUT_DIRECTORY

静态库的输出路径

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

相关文章:

  • 【分明集合】特征函数、关系与运算
  • 【格与代数系统】格与哈斯图
  • 笨方法学python-习题12
  • Sql注入中万能密码order by联合查询利用
  • 应急响应类题练习——玄机第四章 windows实战-emlog
  • Foundation 5 安装使用教程
  • SQL SELECT 语句
  • 在线租房平台源码+springboot+vue3(前后端分离)
  • 应急响应类题练习——玄机第五章 Windows 实战-evtx 文件分析
  • 6.Docker部署ES+kibana
  • Vite 7.0 与 Vue 3.5:前端开发的性能革命与功能升级
  • 【环境配置】Neo4j Community Windows 安装教程
  • HDMI 2.1 FRL协议的流控机制:切片传输(Slicing)和GAP插入
  • LL面试题11
  • 10授权
  • Vue 3 中的 `h` 函数详解
  • Rust征服字节跳动:高并发服务器实战
  • 飞算智造JavaAI:智能编程革命——AI重构Java开发新范式
  • Windows10/11 轻度优化 纯净版,12个版本!
  • 深度学习常见的激活函数
  • 【Python基础】11 Python深度学习生态系统全景解析:从基础框架到专业应用的技术深度剖析(超长版,附多个代码及结果)
  • 【深度学习1】ModernBert学习
  • RNN和LSTM
  • [面试] 手写题-防抖,节流
  • Python应用指南:利用高德地图API获取公交+地铁可达圈(三)
  • 菜谱大全——字符串处理艺术:从文本解析到高效搜索 [特殊字符][特殊字符]
  • 锂离子电池均衡拓扑综述
  • 阶段二JavaSE进阶阶段之多态、关键字、抽象类 2.3
  • 8.Docker镜像讲解
  • 大模型-分布式论文一瞥