CMake手册详解 (九)

CMD#17: else 开始一个if语句块的else部分。

  else(expression)

      参见if命令。

CMD#18: elseif 开始 if 块的 elseif 部分。

  elseif(expression)

     参见if命令。

CMD#19: enable_language 支持某种语言(CXX/C/Fortran/等)

  enable_language(languageName [OPTIONAL] )

  该命令打开了CMake对参数中指定的语言的支持。这与project命令相同,但是不会创建任何project命令会产生的额外变量。可以选用的语言的类型有CXX,C,Fortran等。如果指定了OPTIONAL选项,用CMAKE_<languageName>_COMPILER_WORKS变量来判断该语言是否被成功支持。

 CMD#20: enable_testing 打开当前及以下目录中的测试功能。

  enable_testing()

  为当前及其下级目录打开测试功能。也可参见add_test命令。注意,ctest需要在构建跟目录下找到一个测试文件。因此,这个命令应该在源文件目录的根目录下。

CMD#21: endforeach 结束foreach语句块中的一系列命令。

  endforeach(expression)

  参见FOREACH命令。

CMD#22: endfunction 结束一个function语句块中的一系列命令。

  endfunction(expression)

  参见function命令。

CMD#23: endif 结束一个if语句块中的一系列命令。

  endif(expression)

  参见if命令。

CMD#24: endmacro 结束一个macro语句块中的一系列命令。

  endmacro(expression)

  参见macro命令。

CMD#25: endwhile 结束一个while语句块中的一系列命令。

  endwhile(expression)

  参见while命令。

CMD#26: execute_process 执行一个或更多个子进程。

  execute_process(COMMAND <cmd1> [args1...]]
[COMMAND <cmd2> [args2...] [...]]
[WORKING_DIRECTORY <directory>]
[TIMEOUT <seconds>]
[RESULT_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])

  运行一条或多条命令,使得前一条命令的标准输出以管道的方式成为下一条命令的标准输入。所有进程公用一个单独的标准错误管道。如果指定了WORKING_DIRECTORY选项,后面的路径选项将会设置为子进程的当前工作路径。如果指定了TIMEOUT选项,如果子进程没有在指定的秒数(允许分数)里完成,子进程会自动终止。如果指定了RESULT_VARIABLE选项,该变量将保存为正在运行的进程的结果;它可以是最后一个子进程的整数返回代码,也可以是一个描述错误状态的字符串。如果指定了OUTPUT_VARIABLE或者ERROR_VARIABLE,后面的变量将会被分别设置为标准输出和标准错误管道的值。如果两个管道都是用了相同的变量,它们的输出将会按产生的顺序被合并。如果指定了INPUT_FILE,OUTPUT_FILE 或 ERROR_FILE选项,其后的文件将会分别被附加到第一个进程的标准输入、最后一个进程的标准输出,或者所有进程的标准错误管道上。如果指定了OUTPUT_QUIET后者ERROR_QUIET选项,那么标准输出或标准错误的结果将会被静静的忽略掉。如果为同一个管道指定了多于一个的OUTPUT_*或ERROR_* 选项,优先级是没有指定的。如果没有指定OUTPUT_*或者ERROR_*选项,输出将会与CMake进程自身对应的管道共享。

  execute_process命令是exec_program命令的一个较新的功能更加强大的版本。但是为了兼容性的原因,旧的exec_program命令还会继续保留。

CMD#27:export 从构建树中导出目标供外部使用。

  export(TARGETS [target1 [target2 [...]]] [NAMESPACE <namespace>]
[APPEND] FILE <filename>)

  创建一个名为<filename>的文件,它可以被外部工程包含进去,从而外部工程可以从当前工程的构建树中导入目标。这对于交叉编译那些可以运行在宿主平台的的utility可执行文件,然后将它们导入到另外一个编译成目标平台代码的工程中的情形,特别有用。如果指定了NAMESPACE选项,<namespace>字符串将会被扩展到输出文件中的所有目标的名字中。如果指定了APPEND选项,生成的代码将会续接在文件之后,而不是覆盖它。如果一个库目标被包含在export中,但是连接成它的目标没有被包含,行为没有指定。

  由该命令创建的文件是与指定的构建树一致的,并且绝对不应该被安装。要从一个安装树上导出目标,参见install(EXPORT)命令。

  export(PACKAGE <name>)

  在CMake的用户包注册表中,为<name>包(package)存储当前的构建目录。这将有助于依赖于它的工程从当前工程的构建树中查找并使用包而不需要用户的介入。注意,该命令在包注册表中创建的条目,仅仅在与跟构建树一起运行的包配置文件(<name>Config.cmake)一起使用时才会起作用。

posted on 2012-07-05 21:43  SirDigit  阅读(10487)  评论(0编辑  收藏  举报