最近研究了下cmake,总结了一些常用命令,方便以后快速查找。

  1. project(projectname [CXX] [C] [Java]):

    1. 设置工程名。
  2. set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]):
    1. 设置变量VAR为指定值。
    2. 例子:set(CXX_FLAGS -g -Wall)。将变量CXX_FLAGS设置为"-g;-Wall"。其中以分号分隔。
  3. include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...):
    1. 将dir1, dir2作为include搜索路径。
  4. find_package( [major.minor] [QUIET] [NO_MODULE] [[REQUIRED|COMPONENTS] [components...]]):
    1. 暂时不是很理解。
    2. 例子:find_package(Threads REQUIRED)
  5. add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]):
    1. source_dir下的CmakeLists.txt也会被处理。
  6. 编译链接动作:
    1. add_library(libname [SHARED | STATIC | MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN):

      1. 使用指定源文件生成库文件。该库文件会存储于CMAKE_ARCHIVE_OUTPUT_DIRECTORY或者CMAKE_LIBRARY_OUTPUT_DIRECTORY指定的目录。
    2. add_executable(exename [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN):
      1. 使用指定源文件生成可执行文件。会存储于CMAKE_RUNTIME_OUTPUT_DIRECTORY指定的位置。
    3. target_link_libraries(target library1 <debug | optimized> library2 ...):
      1. 将库文件链接到目标文件。
  7. 内置变量:
    1. 基础目录:

      1. PROJECT_SOURCE_DIR:执行cmake的目录。比如我在/mnt/d/work/cpp/NanoSTL/build目录下执行cmake ..,虽然根CMakelists.txt位于/mnt/d/work/cpp/NanoSTL,PROJECT_SOURCE_DIR的值还是/mnt/d/work/cpp/NanoSTL/build。
      2. PROJECT_BINARY_DIR:工程根目录。比如根CMakelists.txt位于/mnt/d/work/cpp/NanoSTL,那么该变量就是/mnt/d/work/cpp/NanoSTL。
    2. CMAKE_CXX_FLAGS:编译器选项。
    3. 输出目录:
      1. CMAKE_ARCHIVE_OUTPUT_DIRECTORY:编译后.a文件存储位置。
      2. CMAKE_LIBRARY_OUTPUT_DIRECTORY:动态链接文件.so存储位置。
      3. CMAKE_RUNTIME_OUTPUT_DIRECTORY:可执行文件存储位置。
  8. 常用链接:
    1. cmake官方文档

cmake常用命令总结的更多相关文章

  1. CMake学习笔记四-CMake常用命令

    CMake常用命令 PROJECT PROJECT(projectname [CXX] [C] [Java]) 指定工程名称,并可指定工程支持的语言.支持语言列表可忽略,默认支持所有语言 SET ...

  2. CMake 常用命令

    cmake是现在主流的用于多平台C++构建系统,本文用来记录cmake的一些常用命令的索引,加上一些自己理解,理解有误的话,欢迎大家指出. 常用路径 CMAKE_SOURCE_DIR: 顶级cmake ...

  3. cmake 常用变量和常用环境变量查表手册---整理 .

    一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种 ...

  4. cmake 常用变量和常用环境变量查表手册

    cmake 常用变量和常用环境变量查表手册 一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定 ...

  5. cmake常用工程示例大集合

    1 简单的可执行文件生成工程 1.1 源文件   main.cpp #include <stdio.h> int main(int argc, char *argv[]) { printf ...

  6. ROS 的一些常用命令行功能

    1.安装并添加源sudo gedit /etc/apt/sources.list更新下sudo apt-get update添加 sources.list,如sudo sh -c '. /etc/ls ...

  7. Ubuntu常用命令及git常用命令

    1. CMakeLists.txt中指定OpenCV路径 set(OPENCV_DIR /***/***/opencv-2.4.9) 2. cmake工程编译安装 mkdir build cd bui ...

  8. Linux 常用命令(持续补充)

    常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...

  9. LVM基本介绍与常用命令

    一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...

随机推荐

  1. 性能测试——记XX银行保全项目性能问题分析优化

    记XX银行保全项目性能问题分析优化 数据库问题也许是大部分性能问题的关注点,但是JAVA应用与数据库交互的关节,JDBC 就像是我们人体的上半身跟下半身的腰椎,支持上半身,协调下半身运动的重要支撑点. ...

  2. 2019-10-8:渗透测试,基础学习,php基础,会话,文件包含,笔记

    php面向对象基础->调用符号构造函数construct,主要用来创建对象时初始化对象,为成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 析构函数destructor,与构造函数相 ...

  3. Web渗透测试流程

    什么是渗透测试? 渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法 ...

  4. Linux中shell基础、重定向、管道符、环境变量

    1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...

  5. vue 中使用 watch 的各种问题

    报错: Method "watch" has type "object" in the component definition. Did you refere ...

  6. 关于python中的列表遍历注意事项

    在开发过程中,很容易出现以下的错误: 可以看出:假如删除列表的元素之后直接执行continue,那么遍历的时候就会落下一个元素. 那么怎么解决这个问题呢? 首先 : 我们尝试把continue去掉: ...

  7. for源码实现

    for源码实现 我们知道,java的while和for基本上是实现一样的功能,这样会不会有一点缺点,同时java的迭代器显得尤为的麻烦. python的for和while就不同了,在实现迭代的功能的情 ...

  8. Linux运维的第一周总结

    这个阶段主要学习 Linux 运维技术,包括 Linux 基本操作.Bash 编程.应用服务部署.数据库服务部署.日志管理.系统监控等. 第1周: Linux基础本周学习 Linux 基本操作.用户与 ...

  9. SpringBoot+Mybatis 实现动态数据源切换方案

    背景 最近让我做一个大数据的系统,分析了一下,麻烦的地方就是多数据源切换抽取数据.考虑到可以跨服务器跨数据库抽数,再整理数据,就配置了这个动态数据源的解决方案.在此分享给大家. 实现方案 数据库配置文 ...

  10. SpringBoot整合freemarker模板

    一.目录展示 二.导入依赖 三.application.properties配置文件 四.在src/main/resource/templates文件夹中创建HelloFreeMarker.ftl文件 ...