leelongcrazy's blog

Use CMake

常用命令

  • add_executable

    • 原型: add_executable( [WIN32][MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 source2 … sourceN)
    • 作用: 用于指定从一组源文件 source1 source2 … sourceN 编译出一个可执行文件且命名为 name
    • 示例: add_executable(Main ${DIR_SRCS})
  • add_library

    • 原型: add_library([STATIC | SHARED |MODULE] [EXCLUDE_FROM_ALL] source1 source2 … sourceN)
    • 作用: 用于指定从一组源文件 source1 source2 … sourceN 编译出一个库文件且命名为 name
    • 示例: add_library(Lib ${DIR_SRCS})
  • add_subdirectory

    • 原型: add_subdirectory(source_dir[binary_dir] [EXCLUDE_FROM_ALL])
    • 作用: 用于添加一个需要进行构建的子目录
    • 示例: add_subdirectory(Lib)
  • aux_source_directory

    • 原型: "aux_source_directory()
    • 作用: 用于将 dir 目录下的所有源文件的名字保存在变量variable中
    • 示例: aux_source_directory(. DIR_SRCS)
  • cmake_minimum_required

    • 原型: cmake_minimum_required(VERSIONmajor[.minor[.patch[.tweak]]][FATAL_ERROR])
    • 作用: 用于指定需要的Cmake的最低版本
    • 示例: cmake_minimum_required(VERSION 2.8)
  • find_library

    • 原型: find_library (name1 [path1 path2 …])
    • 作用: 用于查找库文件 name1 的路径,如果找到则将路径保存在 VAR中(此路径为一个绝对路径),如果没有找到则结果为-NOTFOUND。
    • 示例:
  • find_path

    • 原型: find_path(name1 [path1 path2 …])
    • 作用: 用于查找包含文件 name1 的路径,如果找到则将路径保存在 VAR中(此路径为一个绝对路径),如果没有找到则结果为-NOTFOUND. 默认的情况下,VAR会被保存在 Cache中,这时候我们需要清除 VAR 才可以进行下一次查询(使用 unset命令)
    • 示例: find_path(LUA_INCLUDE_PATH lua.h ${LUA_INCLUDE_FIND_PATH})
  • find_package

    • 原型: FIND_PACKAGE( [major.minor] [QUIET] [NO_MODULE] [[REQUIRED|COMPONENTS] [componets …]])
    • 作用: 用来调用预定义在CMAKE_MODULE_PATH下的Find.cmake模块,也可以自己定义Find模块,通过SET(CMAKE_MODULE_PATH dir)将其放入工程的某个目录供工程使用
  • mark_as_advanced

    • 原型: mark_as_advanced([CLEAR|FORCE] …)
    • 作用: 标记已命名的缓冲变量为advanced,advanced变量不会在cmake图形界面中显示除非advanced选项开启
  • message

    • 原型: message([STATUS | WARNING | AUTHOR_WARNING | FATAL_ERROR | SEND_ERROR]“message to display” …)
    • 作用: 用于输出信息
    • 示例: message(“Hello World”)
  • project

    • 原型: project([languageName1 languageName2 … ] )
    • 作用: 用于指定项目的名称
    • 示例: project(Main)
  • set

    • 原型: set( [[CACHE [FORCE]] | PARENT_SCOPE])
    • 作用: 用于设定变量variable的值为value. 如果指定了CACHE变量将被放入Cache(缓存)中
    • 示例: set(ProjectName Main)
  • target_link_libraries

    • 原型: target_link_libraries([item1 [item2 […]]] [[debug | optimized | general] ] …)
    • 作用: 用于指定target需要链接item1、item2. 这里 target必须已经被创建,链接的item可以是已经存在的target(依赖关系会自动添加)
    • 示例: target_link_libraries(Main Lib)