美文网首页
cmake学习

cmake学习

作者: Bystander_1996 | 来源:发表于2020-03-30 10:25 被阅读0次

    1. CHECK_CXX_COMPILER_FLAG

    检查CXX编译器是否支持给定的flag
    必须先include(CheckCXXCompilerFlag)
    include(CheckCXXCompilerFlag)
    CHECK_CXX_COMPILER_FLAG(<flag> <var>)
    CHECK_CXX_COMPILER_FLAG 赋值给的var是个bool型
    例子:

    include(CheckCXXCompilerFlag)
    CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
    CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
    if(COMPILER_SUPPORTS_CXX11)
       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
       add_definitions(-DCOMPILEDWITHC11)
       message(STATUS "Using flag -std=c++11.")
    elseif(COMPILER_SUPPORTS_CXX0X)
       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
       add_definitions(-DCOMPILEDWITHC0X)
       message(STATUS "Using flag -std=c++0x.")
    else()
       message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
    endif()
    

    2. cmake常用命令

    include_directories 指定头文件的搜索路径,相当于指定gcc编译器的-I参数

    link_directories 动态链接库或静态链接库的搜索路径,相当于指定gcc的-L参数

    add_subdirectory 包含子目录,当工程包含多个子目录时,此命令有用

    add_definitions 添加编译参数,比如add_definitions(-DDEBUG)将在gcc命令行添加DEBUG宏定义

    add_executable 编译可执行程序

    target_link_libraries 指定链接库,相同于指定-l参数

    3.cmake 内置变量

    CMAKE_C_COMPILER 指定C编译器,通常,CMake运行时能够自动检测C语言编译器。进行嵌入式系统开发时,通常需要设置此变量,指定交叉编译器。

    CMAKE_CXX_COMPILER 指定C++编译器

    CMAKE_C_FLAGS 指定编译C文件时编译选项,比如-g指定产生调试信息。也可以通过add_definitions命令添加编译选项。

    EXECUTABLE_OUTPUT_PATH 指定可执行文件存放的路径。

    LIBRARY_OUTPUT_PATH 指定库文件放置的路径

    BUILD_SHARED_LIBS Switch between shared and static libraries

    CMAKE_BUILD_TYPE build 类型(Debug, Release),-DCMAKE_BUILD_TYPE=Debug

    内置变量的使用:

    在CMakeLists.txt中指定,使用set
    cmake命令中使用,如cmake -DBUILD_SHARED_LIBS=OFF

    相关文章

      网友评论

          本文标题:cmake学习

          本文链接:https://www.haomeiwen.com/subject/fnuqictx.html