cmake学习(3):cmakelist.txt之命令行(一)

cmakelist.txt之命令行(一)


脚本命令(Scripting Commands)

break
中断一个闭环的 foreach 或者 while 循环

break()

continue
跳转到一个闭环的 foreach 或者 while 循环的最开始部分

continue()

cmake_host_system_information
查询运行cmake的主机系统的指定信息。可以一次性查询多个,结果存储在中。

cmake_host_system_information(RESULT <variable> QUERY <key> ...)
Key Description
NUMBER_OF_LOGICAL_CORES Number of logical cores
NUMBER_OF_PHYSICAL_CORES Number of physical cores
HOSTNAME Hostname
FQDN Fully qualified domain name
TOTAL_VIRTUAL_MEMORY Total virtual memory in megabytes
AVAILABLE_VIRTUAL_MEMORY Available virtual memory in megabytes
TOTAL_PHYSICAL_MEMORY Total physical memory in megabytes
AVAILABLE_PHYSICAL_MEMORY Available physical memory in megabytes
IS_64BIT One if processor is 64Bit
HAS_FPU One if processor has floating point unit
HAS_MMX One if processor supports MMX instructions
HAS_MMX_PLUS One if porcessor supports Ext. MMX instructions
HAS_SSE One if porcessor supports SSE instructions
HAS_SSE2 One if porcessor supports SSE2 instructions
HAS_SSE_FP One if porcessor supports SSE FP instructions
HAS_SSE_MMX One if porcessor supports SSE MMX instructions
HAS_AMD_3DNOW One if porcessor supports 3DNow instructions
HAS_AMD_3DNOW_PLUS One if porcessor supports 3DNow+ instructions
HAS_IA64 One if IA64 processor emulating x86
HAS_SERIAL_NUMBER One if processor has serial number
PROCESSOR_SERIAL_NUMBER Processor serial number
PROCESSOR_NAME Human readable processor name
PROCESSOR_DESCRIPTION Human readable full processor description
OS_NAME See CMAKE_HOST_SYSTEM_NAME
OS_RELEASE The OS sub-type e.g. on Windows Professional
OS_VERSION The OS build ID
OS_PLATFORM See CMAKE_HOST_SYSTEM_PROCESSOR

cmake_minimum_required
设置工程所需的最低cmake版本要求。

cmake_minimum_required(VERSION major.minor[.patch[.tweak]] [FATAL_ERROR])
cmake_policy(VERSION major[.minor[.patch[.tweak]]])
cmake_policy(VERSION 2.4)

cmake_policy
设置cmake按照满足需求的更新策略。

cmake_policy(VERSION major[.minor[.patch[.tweak]]])
cmake_policy(SET CMP<NNNN> NEW)
cmake_policy(SET CMP<NNNN> OLD)
cmake_policy(GET CMP<NNNN> <variable>)
cmake_policy(PUSH)
cmake_policy(POP)

cmake_parse_arguments
该命令尝试使用宏和函数来分割给定的参数。它处理这些参数并定义了一组变量来保存相对应的选项值。

cmake_parse_arguments(<prefix> <options> <one_value_keywords> <multi_value_keywords> args...)
cmake_parse_arguments(PARSE_ARGV N <prefix> <options> <one_value_keywords> <multi_value_keywords>)
  1. configure_file
    从其他地方拷贝文件并更改其内容
configure_file(<input> <output>
               [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
               [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])

if
条件语句

if(expression)
  # then section.
  COMMAND1(ARGS ...)
  COMMAND2(ARGS ...)
  #...
elseif(expression2)
  # elseif section.
  COMMAND1(ARGS ...)
  COMMAND2(ARGS ...)
  #...
else(expression)
  # else section.
  COMMAND1(ARGS ...)
  COMMAND2(ARGS ...)
  #...
endif(expression)

endif
结束if语句块

endif(expression)

elseif
开始一个if语句块中的嵌套if语句块

elseif(expression)

else
开始一个if语句块中的else语句块

else(expression)

foreach
针对列表中的每个值执行一组命令

foreach(loop_var arg1 arg2 ...)
  COMMAND1(ARGS ...)
  COMMAND2(ARGS ...)
  ...
endforeach(loop_var)

endforeach
结束foreach语句块

endforeach(expression)

while
当条件为真时执行一组命令

while(condition)
  COMMAND1(ARGS ...)
  COMMAND2(ARGS ...)
  ...
endwhile(condition)

endwhile
结束while语句块

endwhile(expression)

macro
开始定义宏以便后续调用

macro(<name> [arg1 [arg2 [arg3 ...]]])
  COMMAND1(ARGS ...)
  COMMAND2(ARGS ...)
  ...
endmacro(<name>)

endmacro
结束宏块

endmacro(expression)

function
开始定义函数以便后续调用

function(<name> [arg1 [arg2 [arg3 ...]]])
  COMMAND1(ARGS ...)
  COMMAND2(ARGS ...)
  ...
endfunction(<name>)

endfunction
结束函数定义

endfunction(expression)

return
从一个文件、目录或者函数返回

return()

separate_arguments
将以空格分隔的参数列表转化为以分号分隔的列表

separate_arguments(<var> <NATIVE|UNIX|WINDOWS>_COMMAND "<args>")
separate_arguments(<var>)

execute_process
执行一个或者多个子程序

execute_process(COMMAND <cmd1> [args1...]]
                [COMMAND <cmd2> [args2...] [...]]
                [WORKING_DIRECTORY <directory>]
                [TIMEOUT <seconds>]
                [RESULT_VARIABLE <variable>]
                [RESULTS_VARIABLE <variable>]
                [OUTPUT_VARIABLE <variable>]
                [ERROR_VARIABLE <variable>]
                [INPUT_FILE <file>]
                [OUTPUT_FILE <file>]
                [ERROR_FILE <file>]
                [OUTPUT_QUIET]
                [ERROR_QUIET]
                [OUTPUT_STRIP_TRAILING_WHITESPACE]
                [ERROR_STRIP_TRAILING_WHITESPACE]
                [ENCODING <name>])

file
文件操作命令

file(WRITE <filename> <content>...)
file(APPEND <filename> <content>...)
file(READ <filename> <variable> [OFFSET <offset>] [LIMIT <max-in>] [HEX])
file(STRINGS <filename> <variable> [<options>...])

list
列表操作

list(LENGTH <list> <output variable>)
list(GET <list> <element index> [<element index> ...]
     <output variable>)
list(APPEND <list> [<element> ...])
list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>)
list(FIND <list> <value> <output variable>)
list(INSERT <list> <element_index> <element> [<element> ...])
list(REMOVE_ITEM <list> <value> [<value> ...])
list(REMOVE_AT <list> <index> [<index> ...])
list(REMOVE_DUPLICATES <list>)
list(REVERSE <list>)
list(SORT <list>)

string
字符串操作:查找与替换;正则匹配;修改;比较;哈希;生成(generation)。

find_file
查找文件

find_file (<VAR> name1 [path1 path2 ...])
find_file (
          <VAR>
          name | NAMES name1 [name2 ...]
          [HINTS path1 [path2 ... ENV var]]
          [PATHS path1 [path2 ... ENV var]]
          [PATH_SUFFIXES suffix1 [suffix2 ...]]
          [DOC "cache documentation string"]
          [NO_DEFAULT_PATH]
          [NO_CMAKE_PATH]
          [NO_CMAKE_ENVIRONMENT_PATH]
          [NO_SYSTEM_ENVIRONMENT_PATH]
          [NO_CMAKE_SYSTEM_PATH]
          [CMAKE_FIND_ROOT_PATH_BOTH |
           ONLY_CMAKE_FIND_ROOT_PATH |
           NO_CMAKE_FIND_ROOT_PATH]
         )

find_file (<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH)
find_file (<VAR> NAMES name)

find_library
查找库

find_file (<VAR> name1 [path1 path2 ...])
find_file (
          <VAR>
          name | NAMES name1 [name2 ...]
          [HINTS path1 [path2 ... ENV var]]
          [PATHS path1 [path2 ... ENV var]]
          [PATH_SUFFIXES suffix1 [suffix2 ...]]
          [DOC "cache documentation string"]
          [NO_DEFAULT_PATH]
          [NO_CMAKE_PATH]
          [NO_CMAKE_ENVIRONMENT_PATH]
          [NO_SYSTEM_ENVIRONMENT_PATH]
          [NO_CMAKE_SYSTEM_PATH]
          [CMAKE_FIND_ROOT_PATH_BOTH |
           ONLY_CMAKE_FIND_ROOT_PATH |
           NO_CMAKE_FIND_ROOT_PATH]
         )

find_file (<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH)
find_file (<VAR> NAMES name)

find_package
查找包

find_package(<package> [version] [EXACT] [QUIET] [MODULE]
             [REQUIRED] [[COMPONENTS] [components...]]
             [OPTIONAL_COMPONENTS components...]
             [NO_POLICY_SCOPE])

find_package(<package> [version] [EXACT] [QUIET]
             [REQUIRED] [[COMPONENTS] [components...]]
             [CONFIG|NO_MODULE]
             [NO_POLICY_SCOPE]
             [NAMES name1 [name2 ...]]
             [CONFIGS config1 [config2 ...]]
             [HINTS path1 [path2 ... ]]
             [PATHS path1 [path2 ... ]]
             [PATH_SUFFIXES suffix1 [suffix2 ...]]
             [NO_DEFAULT_PATH]
             [NO_CMAKE_PATH]
             [NO_CMAKE_ENVIRONMENT_PATH]
             [NO_SYSTEM_ENVIRONMENT_PATH]
             [NO_CMAKE_PACKAGE_REGISTRY]
             [NO_CMAKE_BUILDS_PATH] # Deprecated; does nothing.
             [NO_CMAKE_SYSTEM_PATH]
             [NO_CMAKE_SYSTEM_PACKAGE_REGISTRY]
             [CMAKE_FIND_ROOT_PATH_BOTH |
              ONLY_CMAKE_FIND_ROOT_PATH |
              NO_CMAKE_FIND_ROOT_PATH])

find_package(<package> [major[.minor]] [EXACT] [REQUIRED|QUIET])
find_package (<package> PATHS paths... NO_DEFAULT_PATH)
find_package (<package>)

find_path
寻找路径

find_path (<VAR> name1 [path1 path2 ...])

find_path (
          <VAR>
          name | NAMES name1 [name2 ...]
          [HINTS path1 [path2 ... ENV var]]
          [PATHS path1 [path2 ... ENV var]]
          [PATH_SUFFIXES suffix1 [suffix2 ...]]
          [DOC "cache documentation string"]
          [NO_DEFAULT_PATH]
          [NO_CMAKE_PATH]
          [NO_CMAKE_ENVIRONMENT_PATH]
          [NO_SYSTEM_ENVIRONMENT_PATH]
          [NO_CMAKE_SYSTEM_PATH]
          [CMAKE_FIND_ROOT_PATH_BOTH |
           ONLY_CMAKE_FIND_ROOT_PATH |
           NO_CMAKE_FIND_ROOT_PATH]
         )

find_path (<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH)
find_path (<VAR> NAMES name)

find_program
查找程序

 find_program (<VAR> name1 [path1 path2 ...])

 find_program (
          <VAR>
          name | NAMES name1 [name2 ...] [NAMES_PER_DIR]
          [HINTS path1 [path2 ... ENV var]]
          [PATHS path1 [path2 ... ENV var]]
          [PATH_SUFFIXES suffix1 [suffix2 ...]]
          [DOC "cache documentation string"]
          [NO_DEFAULT_PATH]
          [NO_CMAKE_PATH]
          [NO_CMAKE_ENVIRONMENT_PATH]
          [NO_SYSTEM_ENVIRONMENT_PATH]
          [NO_CMAKE_SYSTEM_PATH]
          [CMAKE_FIND_ROOT_PATH_BOTH |
           ONLY_CMAKE_FIND_ROOT_PATH |
           NO_CMAKE_FIND_ROOT_PATH]
         )
find_program (<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH)
find_program (<VAR> NAMES name)

get_cmake_property
获取CMake实例的全局属性

get_cmake_property(VAR property)

get_directory_property
在指定目录下获取属性

get_directory_property(<variable> [DIRECTORY <dir>] <prop-name>)
get_directory_property(<variable> [DIRECTORY <dir>] DEFINITION <var-name>)

get_filename_component
获取文件名全称的指定部分

get_filename_component(<VAR> <FileName> <COMP> [CACHE])
get_filename_component(<VAR> <FileName>
                       <COMP> [BASE_DIR <BASE_DIR>]
                       [CACHE])
get_filename_component(<VAR> <FileName>
                       PROGRAM [PROGRAM_ARGS <ARG_VAR>]
                       [CACHE])

get_property
获取属性

get_property(<variable>
             <GLOBAL             |
              DIRECTORY [dir]    |
              TARGET    <target> |
              SOURCE    <source> |
              INSTALL   <file>   |
              TEST      <test>   |
              CACHE     <entry>  |
              VARIABLE>
             PROPERTY <name>
             [SET | DEFINED | BRIEF_DOCS | FULL_DOCS])

include
从一个文件或者模块中加载并运行CMake代码

include(<file|module> [OPTIONAL] [RESULT_VARIABLE <VAR>]   [NO_POLICY_SCOPE])

include_guard
为当前正在执行的文件提供一个包含guard。

include_guard([DIRECTORY|GLOBAL])

mark_as_advanced
标记高级缓存变量

mark_as_advanced([CLEAR|FORCE] VAR [VAR2 ...])

math
数学表达式

math(EXPR <output-variable> <math-expression>)

message
显示一条消息给用户

message([<mode>] "message to display" ...)

(none)         = Important information
STATUS         = Incidental information
WARNING        = CMake Warning, continue processing
AUTHOR_WARNING = CMake Warning (dev), continue processing
SEND_ERROR     = CMake Error, continue processing,
                              but skip generation
FATAL_ERROR    = CMake Error, stop processing and generation
DEPRECATION    = CMake Deprecation Error or Warning if variable
                 CMAKE_ERROR_DEPRECATED or CMAKE_WARN_DEPRECATED
                 is enabled, respectively, else no message.

option
给用户提供选项

option(<option_variable> "help string describing option"
       [initial value])

set_directory_properties
设置目录属性

set_directory_properties(PROPERTIES prop1 value1 prop2 value2)

set_property
设置属性值

set_property(<GLOBAL                            |
              DIRECTORY [dir]                   |
              TARGET    [target1 [target2 ...]] |
              SOURCE    [src1 [src2 ...]]       |
              INSTALL   [file1 [file2 ...]]     |
              TEST      [test1 [test2 ...]]     |
              CACHE     [entry1 [entry2 ...]]>
             [APPEND] [APPEND_STRING]
             PROPERTY <name> [value1 [value2 ...]])

set
为环境变量、正好普通变量、缓存变量设置一个给定的值

set(<variable> <value>... [PARENT_SCOPE])
set(<variable> <value>... CACHE <type> <docstring> [FORCE])
set(ENV{<variable>} <value>...)

site_name
为计算机名称设定一个给定的值

site_name(variable)

unset
为变量,缓存变量或者环境变量恢复原设定值

unset(<variable> [CACHE | PARENT_SCOPE])
unset(ENV{LD_LIBRARY_PATH})

variable_watch
观测CMake变量值的变化

variable_watch(<variable name> [<command to execute>])

猜你喜欢

转载自blog.csdn.net/xholes/article/details/79835758