CheckSourceRuns¶
3.19 版本中新增。
检查给定源是否编译并链接到可执行文件,以及此可执行文件是否随后能够运行。
- check_source_runs¶
check_source_runs(<lang> <code> <resultVar> [SRC_EXT <extension>])
检查
<lang>
源一次,该源在<code>
中提供,检查此源能否构建、链接为可执行文件,随后还能运行。<code>
必须至少包含一个main()
函数,或在 Fortran 中包含一个program
。结果存储在
<resultVar>
指定的内部高速缓存变量中。构建和运行成功由布尔值true
指示。构建或运行失败则由布尔值false
指示,如空字符串或错误消息。默认情况下,测试源文件会被赋予一个与请求的语言相匹配的文件扩展名。
SRC_EXT
选项可用于改写这一默认设置,用.<extension>
代替。<code>
必须包含一个有效的 main 程序。例如:check_source_runs(C "#include <stdlib.h> #include <stdnoreturn.h> noreturn void f(){ exit(0); } int main(void) { f(); return 1; }" HAVE_NORETURN) check_source_runs(Fortran "program test real :: x[*] call co_sum(x) end program" HAVE_COARRAY)
在调用
check_source_runs()
之前,可以通过设置以下任意变量来影响编译和链接命令:
CMAKE_REQUIRED_FLAGS
要传递给编译器的一系列附加标志。该字符串必须用空格分隔——;-list 不适用于此。
CMAKE_<LANG>_FLAGS
的内容及其关联的配置特定变量会在CMAKE_REQUIRED_FLAGS
内容之前自动添加到编译器命令中。
CMAKE_REQUIRED_DEFINITIONS
一个 ;-list,其中包含
-DFOO
或-DFOO=bar
形式的编译器定义。<resultVar>
指定的名称的定义也会自动添加。
CMAKE_REQUIRED_INCLUDES
传递给编译器的头搜索路径的 ;-list。这将是使用的唯一头搜索路径--将忽略
INCLUDE_DIRECTORIES
目录属性的内容。
CMAKE_REQUIRED_LINK_OPTIONS
在版本 3.14 中添加。
要添加到链接命令的选项的 ;-list(有关更多详细信息,请参见
try_compile()
)。
CMAKE_REQUIRED_LIBRARIES
要添加到链接命令的库的 ;-list。它们可以是系统库的名称,也可以是 导入目标(有关更多详细信息,请参见
try_compile()
)。
CMAKE_REQUIRED_LINK_DIRECTORIES
在版本 3.31 中添加。
要传递给链接器的库搜索路径的 ;-list(有关更多详细信息,请参见
try_compile()
)。
CMAKE_REQUIRED_QUIET
在版本 3.1 中添加。
如果此变量评估为布尔真值,则将抑制与检查关联的所有状态消息。