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()