cmake入门

前言

cmake的作用,其实就是自动生成makefile,从而简化了makefile的编写,使其更加简单快捷。

先附上完整工程的cmake

  1. 主CMakeLists
    cmake_minimum_required (VERSION 2.6)
    project (SmartHome)
    # 版本号 1.0
    set (Tutorial_VERSION_MAJOR 1)
    set (Tutorial_VERSION_MINOR 0)
    
    # 头文件位置
    include_directories ("${PROJECT_SOURCE_DIR}/include/")
    include_directories ("/home/xw/pi/")
    include_directories ("/home/xw/curl-7.71.1/_install/include/")
    
    # 子目录构建
    add_subdirectory (input_factory bin)
    add_subdirectory (output_factory bin)
    add_subdirectory (camera_and_exit)
    
    # 目录下所有源文件,加入到变量,方便后面的编译
    aux_source_directory (${PROJECT_SOURCE_DIR}/main SRC_LIST)
    aux_source_directory (${PROJECT_SOURCE_DIR}/thread SRC_LIST2)
    
    # 添加可执行文件;链接库
    add_executable (SmartHome ${SRC_LIST} ${SRC_LIST2})
    target_link_libraries (SmartHome /home/xw/pi/libwiringPi.so.2.50 /home/xw/curl-7.71.1/_install/lib/libcurl.so libpthread.so sinput soutput)
    
    # 安装,二进制bin 动态库,静态库lib
    install(TARGETS SmartHome camera quit recording daemonsmarthome sinput soutput
        RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/build/bin
        LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/build/lib
        ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/build/lib
    )
  2. 分文件下的CMakeLists,主要生成动态库文件
    # 生成动态库
    add_library(sinput SHARED fireSensor.c socketContrl.c)

  3. 编译时候只需要创建一个build目录
  4. 通过cmake 来生成makefile,并指定编译器等
    cmake .. -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc

  5. make编译,make install安装

set命令

  1. set命令可以设置普通变量、缓存条目、环境变量三种变量的值
  2. 可以添加版本号等
  3. nclude_directories

include_directories命令

将指定目录添加到编译器的头文件搜索路径之下

add_subdirectory命令

用于在当前 CMakeLists.txt 文件中引入另一个子目录的 CMake 构建。这样,可以在一个项目中组织多个子项目或子模块的构建。

aux_source_directory命令

目录下所有源文件,加入到变量,方便后面的编译

add_executable命令

添加可执行文件

target_link_libraries命令

添加所需要的链接库文件

install命令

安装,二进制bin 动态库,静态库lib

install(TARGETS myrun mylib
    RUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/build/bin
    LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/build/lib
    ARCHIVE DESTINATION ${PROJECT_SOURCE_DIR}/build/lib
)
  1. 二进制可执行文件 myrun 安装到目录 ${PROJECT_SOURCE_DIR}/build/bin
  2. 动态库文件 mylib 安装到目录 ${PROJECT_SOURCE_DIR}/build/lib
  3. 静态库文件 mystaticlib 安装到目录 ${PROJECT_SOURCE_DIR}/build/lib

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dz小伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值