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

Clion刷题攻略-配置Cmake

使用Clion刷题,在一个项目中创建多个main函数,每一个文件对应一道题目,将Clion作为题目管理系统使用,并且cpp文件允许使用中文名,exe文件统一输出到runtime目录,防止污染根目录,CmakeLists文件如下:

cmake_minimum_required(VERSION 3.29)
project(CppProject)

set(CMAKE_CXX_STANDARD 20)

#设定构建运行路径,避免污染根目录
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/archive)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/library)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/runtime)
set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/path)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG   ${CMAKE_SOURCE_DIR}/runtime)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/runtime)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_SOURCE_DIR}/runtime)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_SOURCE_DIR}/runtime)


#遍历项目根目录下所有的.C文件,自动添加
file(GLOB_RECURSE files *.c */*.c *.cpp */*.cpp)
foreach(file ${files})
    # 获取文件名(不带扩展名),可能包含中文
    get_filename_component(fullname ${file} NAME_WE)
    # 去除非法字符,仅保留字母、数字和下划线
    string(REGEX REPLACE "[^A-Za-z0-9_]" "" base_name ${fullname})
    # 将文件的绝对路径转为 CMake 格式的路径(保证唯一性)
    file(TO_CMAKE_PATH "${file}" filePath)
    # 利用文件路径生成 MD5 哈希值
    string(MD5 hash ${filePath})
    # 取哈希值的前4个字符作为后缀
    string(SUBSTRING ${hash} 0 4 uniqueSuffix)
    # 构造合法且唯一的 target 名称
    set(target_name "${base_name}_${uniqueSuffix}")
    add_executable(${target_name} ${file})
    # 如果希望最终生成的 exe 文件名保留原文件名(包含中文),可设置 OUTPUT_NAME 属性
    set_target_properties(${target_name} PROPERTIES OUTPUT_NAME ${fullname})
    message("    -- ${file} will be compiled to runtime/${fullname}")
endforeach()

相关文章:

  • TypeError: __init__() got an unexpected keyword argument ‘device_type‘
  • 模型部署与调用
  • OrbStack 作为 Mac 用户的 Docker 替代方案
  • 数据结构每日一题day9(顺序表)★★★★★
  • Thrust库中,host_vector和device_vector数据之间如何高效传输,有异步传输方式吗?
  • Linux 企业项目服务器组建(附脚本)
  • C++学习笔记(三十二)——priority_queue
  • Java基础 4.1
  • OpenLayers:海量图形渲染之矢量切片
  • 07-01-自考数据结构(20331)- 排序-内部排序知识点
  • 【14】Selenium的基本使用
  • 一道积分_4
  • DJI上云API使用与配置
  • spring打包,打包错误
  • 供应链管理-经济指数:GDP、GNP、NNP、NDP、PPI、CPI、DPI...
  • WordPress汉主题
  • 二、基本应用工具
  • 云原生周刊:Kubernetes v1.33 要来了
  • 针对单台浪潮服务器运行Windows Server 2019和SQL Server的MES系统场景、高效能监控策略(兼顾软硬件健康)
  • golang 的channel
  • 前四个月社会融资规模增量累计为16.34万亿元,比上年同期多3.61万亿元
  • 台行政机构网站删除“汉人”改为“其余人口”,国台办回应
  • 当代科技拟召开债券持有人会议 ,对“H20科技2”进行四展
  • 为惩戒“工贼”,美国编剧工会“痛下杀手”
  • 长沙潮宗街内“金丝楠木老屋文旅博物馆”起火:明火已扑灭,无伤亡
  • 综艺还有怎样的新可能?挖掘小众文化领域