CheckLanguage¶
此模块提供了一个命令,用于检查是否可以使用 enable_language()
或 project()
命令启用某种语言。
在 CMake 项目中加载此模块,使用
include(CheckLanguage)
当项目不总是需要特定语言但可能需要为某些部分启用它时,此模块非常有用。
命令¶
此模块提供以下命令
- check_language¶
检查是否可以在 CMake 项目中启用某种语言
check_language(<lang>)
此命令尝试在测试项目中启用语言
<lang>
,并将结果记录在以下缓存变量中CMAKE_<LANG>_COMPILER
如果可以启用该语言,则此变量将设置为找到的编译器。如果无法启用该语言,则此变量将设置为
NOTFOUND
。如果此变量已设置,无论是显式设置还是由之前的调用缓存,都将跳过检查。
CMAKE_<LANG>_HOST_COMPILER
当
<lang>
是CUDA
或HIP
时,此变量将设置。如果检查检测到编译所需的显式主机编译器,则此变量将设置为该编译器。如果检查检测到不需要显式主机编译器,则此变量将清除。
如果此变量已设置,则只有当
CMAKE_<LANG>_COMPILER
也设置时,其值才会被保留。否则,检查将运行并用新结果覆盖CMAKE_<LANG>_HOST_COMPILER
。请注意,CMAKE_<LANG>_HOST_COMPILER
的文档说明,它不应在未同时将CMAKE_<LANG>_COMPILER
设置为 NVCC 编译器的情况下设置。CMAKE_<LANG>_PLATFORM
当
<lang>
是HIP
时,此变量将设置为检测到的 GPU 平台。如果此变量已设置,则其值始终保留。对于
CMAKE_<LANG>_COMPILER
,仅考虑兼容值。
示例¶
以下示例检查 Fortran
语言的可用性,如果可能则启用它
include(CheckLanguage)
check_language(Fortran)
if(CMAKE_Fortran_COMPILER)
enable_language(Fortran)
else()
message(STATUS "No Fortran support")
endif()