首页 > 其他分享 >使用Cmake-编写CMakeLists.txt 文件

使用Cmake-编写CMakeLists.txt 文件

时间:2024-09-04 16:04:25浏览次数:12  
标签:COMMENT CMakeLists Cmake help custom project add COMMAND txt

好处:
a) 跨平台(makefile跟平台强相关)
b) cmake可以自动生成makefile

编写CMakeLists.txt 文件


#关键主体:
cmake_minimum_required(VERSION 3.10) # 指定最低支持的 CMake 版本
project(FunMain VERSION 1.0) # 定义项目名称及版本号
# 添加可执行文件
add_executable(${PROJECT_NAME} ${SOURCES})

Makefile 转换为 CMakeLists.txt 文件


project(FunMain VERSION 1.0) # 定义项目名称及版本号

# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS False)

# 获取所有 .cpp 文件
file(GLOB SOURCES "*.cpp")

# 添加可执行文件
add_executable(${PROJECT_NAME} ${SOURCES})


# 设置编译选项
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_FLAGS "-Wall")



# 清理规则
add_custom_target(clean_project
    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/cmake_clean.cmake
    COMMENT "Cleaning the project..."
)

# 彻底清理
add_custom_target(mrproper
    DEPENDS clean
    COMMAND rm -f *.d
    COMMENT "Performing a thorough cleaning..."
)

# 重新构建
add_custom_target(rebuild
    DEPENDS clean ${PROJECT_NAME}
    COMMENT "Rebuilding the project..."
)

# 帮助信息
add_custom_command(
    OUTPUT help_project
    COMMAND echo "可用的目标:"
    COMMAND echo "   all    - 构建程序 (默认)"
    COMMAND echo "   clean  - 清除目标文件和可执行文件"
    COMMAND echo "   mrproper - 彻底清除,包括自动依赖文件"
    COMMAND echo "   rebuild - 重新构建所有内容"
    COMMENT "Displaying help information..."
)

# 为 'make help' 提供目标
add_custom_target(show_help
    DEPENDS show_help
    COMMENT "Displaying help information..."
)

# 为 'make help' 提供别名
add_custom_target(help_project
    DEPENDS show_help
    COMMENT "Displaying help information (alias for show_help)"
)

# 设置 help 为目标的依赖
add_dependencies(help_project show_help)

使用命令cmake .系统会调用CMakeLists.txt文件生成makefile
使用code makefile命令调用vscode查看生成的makefile文件

二:创建build文件夹
目的:避免生成的临时文件和源文件混在一起

mkdir build
cd build
cmake ..(..代表上层目录)
make
最后会生成可执行文件

标签:COMMENT,CMakeLists,Cmake,help,custom,project,add,COMMAND,txt
From: https://www.cnblogs.com/light-LifeClub/p/18396715

相关文章

  • CMake构建学习笔记14-依赖库管理工具
    如果说做C/C++开发最大的痛点是什么,那么一定是缺少一个官方的统一的包管理器。认真的说,如果你要用C/C++干点什么,至少需要(Windows系统下):C/C++语言本身、标准库、以及操作系统API几乎干不了什么,除非你真的想从零开始造轮子。开始找一些现成的实现组成依赖库。最好看能不能找到预......
  • JNI -cmake sample
    CMakeLists.txtcmake_minimum_required(VERSION3.16)set(CMAKE_CXX_STANDARD11)project(test)set(SRCsrc/HelloWorld.cpp)#配置cpp源文件到SRC变量中set(EXECUTABLE_OUTPUT_PATH./build)#配置输出目录set(JAVA_HOME$ENV{JAVA_HOME})#获取系统环境变量中的......
  • [20240902]验证sql_idz.sh计算PLSQL代码块.txt
    [20240902]验证sql_idz.sh计算PLSQL代码块.txt--//测试验证sql_idz.sh计算PLSQL代码块是否正确.1.环境:SYS@book>@ver2==============================PORT_STRING                  :x86_64/Linux2.4.xxVERSION                     ......
  • [20240902]建立完善sql_idz.sh脚本.txt
    [20240902]建立完善sql_idz.sh脚本.txt--//增加hash_value的16进制显示采用大小写显示.$cat-v~/bin/sql_idz.sh#!/bin/bash#calcucatesql_textoffull_hash_value(16),hash_value(10),sql_id(32).#argv1sqlstatementorsqloftextfile#argv2flag:0=sqlstatement......
  • CMake构建学习笔记13-opencv库的构建
    OpenCV(OpenSourceComputerVisionLibrary)是一个开源的计算机视觉和机器学习软件库,旨在提供一个跨平台的、易于使用的、快速执行的计算机视觉接口。如果只是简单的使用,其实不必要像笔者这样使用源代码进行构建,直接使用官方提供的二进制安装包即可。一般来说,需要从源代码进行构建......
  • [20240829]关于依赖链3.txt
    [20240829]关于依赖链3.txt--//如果修改表结构或者改名,相关的sql语句在共享池会失效,必须重新分析,我开始学习orcle时候,一直认为这些相关信息保存在表对象--//句柄的堆0里面,如果涉及到的sql语句很多,这样堆0应该很大,而实际上的情况上堆0一直没有变化.我曾经问过别人这个问题,......
  • [20240827]分析为什么出现library cache lock等待事件2.txt
    [20240827]分析为什么出现librarycachelock等待事件2.txt--//前几天一直在分析如果表不存在的情况下,密集执行为什么出现librarycachelock等待事件,而且出现的mode=2(共享模式),按照道--//理不应该阻塞,做一个分析.1.环境:SCOTT@book01p>@ver2==============================......
  • [20240828]分析为什么出现library cache lock等待事件5.txt
    [20240828]分析为什么出现librarycachelock等待事件5.txt--//前几天测试遇到的问题,假如表不存在的情况下,如果密集执行这类sql语句,不理解为什么出现librarycachelock等待事件.--//验证如果有1个会话,是否会持有mode=3的情况出现.--//上午使用gdb设置断点来验证,这次直接密集......
  • [20240829]关于依赖链.txt
    [20240829]关于依赖链.txt--//如果修改表结构或者改名,相关的sql语句在共享池会失效,必须重新分析,我开始学习orcle时候,一直认为这些相关信息保存在表对象--//句柄的堆0里面,如果涉及到的sql语句很多,这样堆0应该很大,而实际上的情况上堆0一直没有变化.我曾经问过别人这个问题,最......
  • [20240826]奇怪ORA-01031 insufficient privileges报错.txt
    [20240826]奇怪ORA-01031insufficientprivileges报错.txt--//遇到的奇怪ORA-01031insufficientprivileges情况,做一个分析:1.环境:SYS@book01p>@ver2==============================PORT_STRING                  :x86_64/Linux2.4.xxVERSION     ......