如何使用CMAKE检测Visual Studio Express

时间:2014-08-04 20:21:15

标签: cmake

标题几乎是自我解释的。我需要检测VS Express以禁用Express中无法使用的某些功能。

1 个答案:

答案 0 :(得分:0)

在CMake中,理念是直接检测特征,然后定义指示这些特征存在的变量。您可以使用该变量来调整构建。

在这种情况下,该功能是ATL,因此您要做的不是识别Visual Studio的免费版本,而是检测系统上是否存在ATL。您可以通过多种方式执行此操作:

  1. 查找特定于ATL的头文件
  2. 查找特定于ATL的目录
  3. 寻找特定于ATL的图书馆
  4. 以下是使用第二种方法的示例:

    cmake_minimum_required(VERSION 3.0)
    project(foo CXX)
    
    get_filename_component(_vc_bin_dir ${CMAKE_CXX_COMPILER} DIRECTORY)
    get_filename_component(_vc_dir ${_vc_bin_dir} DIRECTORY)
    set(_vc_atlmfc ${_vc_dir}/atlmfc)
    if(IS_DIRECTORY ${_vc_atlmfc})
        message(STATUS "You have ATL/MFC available in ${_vc_atlmfc}.")
    else()
        message(STATUS "You don't have ATL/MFC.")
    endif()
    
    add_executable(a a.cpp)
    

    get_filename_component是一个CMake 3.0命令,因此需要3.0版本。