欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > cmake入门

cmake入门

2025/4/24 20:32:57 来源:https://blog.csdn.net/m0_51247005/article/details/140017474  浏览:    关键词: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 soutputRUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/build/binLIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/build/libARCHIVE 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 mylibRUNTIME DESTINATION ${PROJECT_SOURCE_DIR}/build/binLIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/build/libARCHIVE 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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词