• Cmake


    cmake_minimum_required(VERSION 3.18.1)

    声明使用的最低版本

    project("myName")

    指定当前工程名称

    set(src_list test1.cpp test2.cpp test3.cpp)

    用来显示的定义变量,将test.cpp等多个源文件用空格隔开赋值给src_list

    message(status "这里是输出信息")

    使用message向屏幕输出信息,status表示输出前添加“--”

    add_library(myTest myTest.cpp)

    生成静态库

    add_library(myTest shared myTest.cpp)

    生成动态库.so

    add_library(myTest shared src/test1.cpp src/test2.cpp)

    把多个源文件生成一个库,多个cpp文件用空格隔开

    find_package(OpenCV REQUIRED QUIET)

    用来查找依赖包,把一整个依赖包的头文件包含路径、库路径、库名字、版本号都获取到,可能会失败

    OpenCV要查找的包名

    REQUIRED 当未找到满足条件的包(例如版本号不匹配,或指定组件未找到等),会终止CMake的执行过程,并输出一条错误信息。如果未指定该选项,即使未找到满足条件的包,CMake的执行过程也会继续

    QUIET 禁止输出信息,正常情况当找到包时,CMake会打印一些信息,指定该选项时会禁止掉这些打印。例外是当同时指定QUIET时,如果找不到包,仍然会输出错误信息并终止执行过程

    COMPONENTS 指定要查找的组件。通常一个包可能包含多个组件(可以理解为多个库,例如把C++的std看成一个包的概念,那么vector就是std下的其中一个组件),我们的工程可能会依赖包下的具体某个组件,因此可以通过这个选项来检测这些组件是否存在。通常的约定是,该选项后的组件应该都找到时才认为包找到,否则认为未找到满足条件的包。这个约束会依赖包的.cmake来实现,通过find_package命令传入的COMPONENTS可以通过_FIND_COMPONENTS这个变量来获得

    OPTION_COMPONENTS与上面的区别是不要求组件必须存在,不影响Cmake的执行

    _FOUND用来表示包是否找到,true表示找到,false表示未找到

    find_dependency(MYDEP REQUIRED)

    依赖其他库,和find_library用法相同

    catkin_package()

    给下游(使用本包的其他包)使用,也就是向其他包导出依赖,这些依赖可能是本包给其他包提供的公共头文件、库,或者是本包依赖的其他包

    有五种方式

    DEPENDS和CATKIN_DEPENDS用来告诉catkin需要将你程序包的哪些依赖项,传递给使用find_package(...)查找你的程序包的程序包

    INCLUDE_DIRS 导出包的路径

    LIBRARIES 导出项目中的库

    CATKIN_DEPENDS 该项目依赖的其他catkin项目

    DEPENDS 该项目依赖的非catkin Cmake项目

    inlcude_directories()

    向工程添加多个特定的头文件搜索路径

    link_directories()

    向工程添加多个特定的库文件搜索路径

    add_executable(main main.cpp main1.cpp main2.cpp)

    将cpp文件生成可执行文件main

    target_link_libraries(main test.so user.so)

    为可执行文件main添加需要链接的库

    include()

    用来载入并运行来自于文件或模块的 CMake 代码

  • 相关阅读:
    CSS中如何在table中隐藏表格中从第4个开始的多个 <tr> 元素
    k8s 安装
    基于AT89C51单片机GSM模块的家庭防火防盗报警系统设计(含文档、源码与proteus仿真,以及系统详细介绍)
    接口自动化测试之Mock
    语义推理的功能组件动态绑定研究
    java静态变量理解
    JavaScript学习——什么是编程语言?计算机基础
    19.Chain of Responsibility职责链(行为型模式)
    【Linux常用命令10】用户管理和文件权限命令
    ASP.NET的WebService跨域CORS问题解决方案
  • 原文地址:https://blog.csdn.net/somethingstill/article/details/125595169