最近研究了下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. C#学习笔记05--枚举/结构体

    一.枚举   当变量的取值范围是固定的几个时, 就可以使用枚举类型, 这样会更加简洁方便   1.1.定义: 访问修饰符 enum 枚举类型名 { 成员1, 成员2, 成员3, ... } publi ...

  2. Spring security (一)架构框架-Component、Service、Filter分析

    “致"高级"工程师(BUG工程师) 一颗折腾的心

  3. sed和awk的简单使用

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以  行 为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法. 语法: sed [-nefri] ‘ ...

  4. Spring IOC初始化深度解析

    1.前言 本文是基于JAVA配置方法对Spring IOC进行分析,掌握Spring IOC初始化流程对于我们更好的使用Spring.学习Spring还是很有帮助的,本文所使用的的Spring版本为5 ...

  5. windows下安装python numpy+scipy+matlotlib+scikit-learn等流行库

    (1)请不要直接使用   pip install scikit-learn pip install Numpy pip install Scipy pip install Matplotlib 命令安 ...

  6. 关于TC297的Flash写入之前是否需要先擦除的问题

    通过实际测试,对TC297 Flash的一个地址空间可以重复执行写入操作(program),而不需要先对该区域所在扇区进行擦除. MPC5675K则需要在写入之前进行擦除.

  7. C 可变参数函数的本质

    C语言支持定义可变参数的函数,方法是在函数的参数列表最后加上 " ... ",代表变长的参数列表,例如: void Func(int num, ...) { } 需要注意 “... ...

  8. JSP + Session Cookie详解

    篇幅较大,对JSP进行了非常详细的讲解,并解释了Session和Cookie的实现原理 ,预计看完需要20分钟左右,慢慢享受吧 JSP概述 掌握了servlet后,就可以利用servlet来开发动态页 ...

  9. ARTS-S golang panic返回默认值

    package main import "fmt" func fn_test_panic() (a int) { a = 2 panic("This is panic&q ...

  10. 详解numpy的argmax

    从最简单的例子出发 假定现在有一个数组a = [3, 1, 2, 4, 6, 1]现在要算数组a中最大数的索引是多少.这个问题对于刚学编程的同学就能解决.最直接的思路,先假定第0个数最大,然后拿这个和 ...