美文网首页
cmake 常用知识点

cmake 常用知识点

作者: FoolishFlyFox | 来源:发表于2019-05-08 10:19 被阅读0次

    不同的环境有不同的工程构建方法,例如qt用qmake语法,gnu用make语法,微软有nmake等等,对于不同的Make工具,我们需要编写用不同的语法进行编写。而cmake就是对语法进行抽象统一。cmake 的使用为:编写CMakeLists.txt文件 → 执行 cmake,生成对应的Make文件 → 执行make

    函数篇

    编译参数设置

    • add_definitions(-std=c++14) 的作用:设置c++编译器的语言版本号,有的语法是在c++14中新加的,则如果用之前的版本就会出现编译错误;

    • include_directories(directory1 directory2 ...):设置头文件所在的目录;

    • link_directories(directory1 directory2 ...):设置库文件夹;

    目标生成

    • add_executable(目标名 文件1 文件2 ...) 将文件1、文件2、... 一起编译成一个可执行文件;

    • add_library(目标名 文件1 文件2 ...) 将 文件1、文件2、... 进行静态编译,并合并为一个 lib目标名.a 的静态文件库;如果是 add_library(目标名 SHARED 文件1 文件2 ...) 将会生成动态链接库;

    • add_subdirectory(<dir>) 的作用:加入到指定的dir中,并执行 cmake . 命令,如果dir中不含有 CMakeLists.txt 文件,会发生执行错误;

    • target_link_libraries(<target> ... <item> ...):设置 target 的动态链接库;

    cmake变量设置

    • set(<variable> <value>):设置 variable 的值为 valuevalue 也可以使用变量;另外,变量也可以在执行 cmake 时设置,例如:cmake -DCMAKE_X=abc . 等价于在 CMakeLists.txt 中添加了语句 set(CMAKE_X abc)

    • file(GLOB_RECURSE source_files a/*.cpp b/*.h):递归查找 a 下的cpp文件和b下的h文件,将找到的文件存在变量source_files下;

    • aux_source_directory(<dir> <variable>) 将 dir 目录下的所有源文件都保存在变量 variable 中,以空格分隔;

    cmake 辅助功能

    • message(<mode> <information>)mode 表示message的类型,有:STATUS/ WARNING/ AUTHOR_WARNING/ SEND_ERROR/ FATAL_ERROR/ DEPRECATION,该打印操作是在执行cmake时执行,而不是执行make时执行;

    变量篇

    • MAKE 变量:在makefile中,变量 $(MAKE) 是当前环境中make路径,可能是make、qmake、pmake、nmake。

    • CMAKE_SOURCE_DIR:该变量表示第一个执行cmake的 CMakeLists.txt 所在的文件夹,而不是通过 add_subdirectory中的文件夹地址;

    • CMAKE_BINARY_DIR:该变量表示执行cmake时所在的文件夹,通常来说,如果执行 cmake .,则 CMAKE_SOURCE_DIRCMAKE_BINARY_DIR 相同;例如我们的 CMakeLists.txt 文件在 a 文件夹下,我们在 a/b 文件夹下执行 cmake ..,那么 CMAKE_SOURCE_DIR 就是 a,而 CMAKE_BINARY_DIR 就是 a/b;

    • CMAKE_BUILD_TYPE 变量可改变编译组态,预设的 CMAKE_BUILD_TYPE 是None,支持:Debug、Release、RelWithDebInfo、MinSizeRel;

    • CMAKE_ARCHIVE_OUTPUT_DIRECTORY/ CMAKE_LIBRARY_OUTPUT_DIRECTORY/ LIBRARY_OUTPUT_PATH/ CMAKE_RUNTIME_OUTPUT_DIRECTORY :见文章 https://www.jianshu.com/p/599550afd28d

    make 选项

    • --print-directory:等价于 -w,在makefile中执行cd操作时,会显示进入目录和离开目录的信息;

    相关文章

      网友评论

          本文标题:cmake 常用知识点

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