CMake简单使用

cmake

注释#

  • 命令

    • 【启动】

      • cmake .. -DMAIN=__ABCD__
      • make
    • 【变量】

      • ${CMAKE_CURRENT_SOURCE_DIR}
        • 当前CMakeLists.txt所在目录
    • 【常规开头】

      • cmake最低版本
        • cmake_minimum_required(VERSION 3.28)
      • 设置项目名称
        • project(test)
      • 设置C++版本
        • set(CMAKE_CXX_STANDARD 11)
      • 定义宏
        • add_definitions(-DMY_MACRO)
    • 【全局设置】

      • .h 目录
        • include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
      • .cpp源文件
        • file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
          • 绝对路径
      • .a .so目录
        • link_directories(${PHOME}/lib2)
      • 链接.a .so
        • link_libraries(fun)
      • 输出路径
        • .exe -生成目录
          • set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
        • .a .so -生成目录
          • set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib1)
        • .so -生成目录
          • set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PHOME}/dil)
        • .a -生成目录
          • set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PHOME}/lib)
        • .exe -生成目录
          • set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
    • 【目标文件生成】

      • 链接.c .cpp生成exe
        • add_executable(run ${SRC1} ${SRC2})
      • 链接生成静态库
        • add_library(fun STATIC ${SRC})
      • 链接生成动态库
        • add_library(fun SHARED ${SRC})
    • 【target设置】

      • target_
        • #链接动态库
          • target_link_libraries(run fun)
        • # 库.a .so目录
          • target_link_directories(run PUBLIC ${PHOME}/lib ${PHOME}/dil)
            • PUBLIC PRIVATE
        • # 头.h目录
          • target_include_directories(run PUBLIC ${PHOME}/include)
            • PUBLIC PRIVATE
      • 重设【文件名】
        • SET_TARGET_PROPERTIES (dil1 PROPERTIES OUTPUT_NAME calc)
        • SET_TARGET_PROPERTIES (lib1 PROPERTIES OUTPUT_NAME calc)
      • 重设【输出路径】
        • 1
          • set_target_properties(lib1
          • PROPERTIES ARCHIVE_OUTPUT_DIRECTORY
          • ${PHOME}/lib)
        • # ARCHIVE_OUTPUT_DIRECTORY
          • 静态库输出路径
        • # LIBRARY_OUTPUT_DIRECTORY
          • 动态库输出路径
        • # RUNTIME_OUTPUT_DIRECTORY
          • exe输出路径
    • 【嵌套】

      • add_subdirectory(src) 嵌套子目录
  • 使用

    • 【cmake简单使用】

      • target级
        • 常规开头
          • cmake_minimum_required(VERSION 3.28)
          • project(test)
          • SET(CMAKE_CXX_STANDARD 11)
          • SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
        • 源文件获取
          • file(GLOB SRC ${PHOME}/src/*.c*)
        • 编译链接目标
          • add_executable(exe ${SRC})
          • target_include_directories(exe PUBLIC ${PHOME}/include)
          • set_target_properties(exe PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
      • 全局
        • 常规开头
          • cmake_minimum_required(VERSION 3.28)
          • project(test)
          • SET(CMAKE_CXX_STANDARD 11)
          • SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
        • 源文件
          • file(GLOB SRC ${PHOME}/src/*.c*)
        • 全局设置
          • include_directories(${PHOME}/include)
          • set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
        • 编译链接目标
          • add_executable(exe ${SRC})
    • 【动态库 静态库 创建】

      • 常规开头
        • cmake_minimum_required(VERSION 3.28)
        • SET(CMAKE_CXX_STANDARD 11)
        • SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
      • 源文件
        • file(GLOB SRC ${PHOME}/src/add.cpp ${PHOME}/src/mult.cpp)
      • 全局设置
        • #include_directories(${PHOME}/include)
          • .h目录
        • #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PHOME}/dil)
          • #动态库路径
        • #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PHOME}/lib)
          • #静态库路径
      • 编译链接目标
        • add_library(fun1 STATIC ${SRC})
        • add_library(fun2 SHARED ${SRC})
        • set_target_properties(fun1 PROPERTIES OUTPUT_NAME calc)
          • 改库【名字】
        • set_target_properties(fun2 PROPERTIES OUTPUT_NAME calc)
        • set_target_properties(fun1 PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PHOME}/lib)
          • 改库【路径】
        • set_target_properties(fun2 PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PHOME}/dil)
        • target_include_directories(fun1 PUBLIC ${PHOME}/include)
          • 包含.h目录
        • target_include_directories(fun1 PRIVATE ${PHOME}/include)
    • 【动态库 静态库使用】

      • 全局
        • 常规开头
          • cmake_minimum_required(VERSION 3.28)
          • project(test)
          • SET(CMAKE_CXX_STANDARD 11)
          • SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
        • 源文件
          • file(GLOB SRC ${PHOME}/src/main.cpp)
        • 全局设置
          • set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
          • include_directories(${PHOME}/include)
          • link_directories(${PHOME}/lib ${PHOME}/dil)
            • #优先使用动态库
          • link_libraries(calc)
        • 编译链接目标
          • add_executable(run ${SRC})
      • target级
        目标文件
        • 常规开头
          • cmake_minimum_required(VERSION 3.28)
          • project(test)
          • SET(CMAKE_CXX_STANDARD 11)
          • SET(PHOME ${CMAKE_CURRENT_SOURCE_DIR})
        • 源文件
          • file(GLOB SRC ${PHOME}/src/main.cpp)
        • 编译链接目标
          • add_executable(run ${SRC})
            • 编译链接生成exe
          • target_link_directories(run PUBLIC ${PHOME}/lib ${PHOME}/dil)
            • 指定【库】目录
          • target_link_libraries(run calc)
          • target_include_directories(run PUBLIC ${PHOME}/include)
            • 指定.h目录
          • set_target_properties(run PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PHOME}/bin)
            • exe 生成路径

 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值