cmake语法笔记

project (demo)    :

        编译一个名为demo的工程

add_executable(executable_name source1 [source2 ...]) : 

       作用: 通过源文件,生成可执行文件

        executable_name 是生成的可执行文件的名称,source1、source2 …是用于生成可执行文件的源代码文件,可以有多个这样的源代码文件

aux_source_directory(dir var):

        作用:将文件夹dir 下的所有文件赋值给var

        dir表示源文件目录,var表示用于存放所有源文件的变量名。

set(VAR var) :

        这相当于C语言中的宏定义 若放在C语言中则相当于 #define VAR var

include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...]):  

       作用:添加头文件所处文件夹

         AFTER和BEFORE:指定添加的头文件路径是在系统默认路径之前或之后。

        SYSTEM:指定添加的头文件路径是为了包含系统头文件,并将这些路径标记为系统路径,以避免在产生警告时提醒用户

        dir1、dir2等:指定要添加的头文件路径,可以指定多个路径。

add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL]) :

        作用:这个命令的作用是向当前项目中添加一个子目录

        source_dir 源代码目录    指定一个包含CMakeLists.txt和h代码文件所在的目录,该目录可以是绝对路径,也可以是相对路径,

        binary_dir 二进制代码目录 这个目录是可选的,如果指定,cmake命令执行后的输出文件(可执行文件等)将会存放在此处,若没有指定,默认情况等于source_dir没有进行相对路径计算前的路径,也就是CMAKE_BINARY_DIR

        EXCLUDE_FROM_ALL标记  这个标志是可选的,如果传递了该参数表示新增加的子目录将会排除在ALL目录之外(可能是make系统中的make all?),表示这个目录将从IDE的工程中排除。用户必须显式在子文件这个编译目标(手动cmake之类的)。

add_library(<name> [STATIC|SHARED|MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...]):

        作用:生成库文件包括动态库与静态库

  <name>表示生成的库名称

  source1 [source2 ...]表示源代码文件。

  STATICSHAREDMODULE用于指定库的类型,分别表示静态库(.a文件)、动态库(.so.dylib文件)和模块(类似于动态库,但有区别)。

  EXCLUDE_FROM_ALL表示该库不会随着make all命令执行而编译。

set_target_properties(target1 target2 ... PROPERTIES prop1 value1 PROPERTIES prop2 value2 ...)

        作用:设置指定目标属性的命令

        arget1、target2等是需要设置属性的目标名称。

        prop1、prop2等是目标的属性名  PROPERTIES 这是个关键字

        value1、value2等则是要设置的属性值。

find_library(VAR name1 [path1 path2 ...])

        作用:在指定路径中查找库文件

        VAR是一个用于存储所找到的链接库路径的变量名,可以根据需要指定。

        name1是链接库的名称,

        path1、path2等是可选的搜索路径,表示要搜索的目录列表。如果未指定路径列表,则函数将在默认的系统库路径中搜索。

        注:使用该指令需在调用cmake前,可选搜索路径就得含有该库,否则会失败,这个是调用外在库时才会使用的,如果已经调用了 add_library指令就不要再调用该指令了。

target_link_libraries(<target> [item1 [item2 [...] ] ]   [ [debug|optimized|general]  <item>] [...])

        <target>是用于编译的可执行文件或库文件的名称,

        item1、item2等参数是需要链接到目标文件中的库文件的名称。

        后面的选项(debug、optimized、general)可以指定连接选项以及链接库的属性

一些常用的宏:

        EXECUTABLE_OUTPUT_PATH            生成的可执行文件存放的路径

        LIBRARY_OUTPUT_PATH                     生成的库文件存放的路径

        PROJECT_SOURCE_DIR(只读)            工程文件的路径 

        CMAKE_SYSTEM_PROCESSOR          用于存储当前系统的处理器架构信息        

        CMAKE_C_COMPILER                          用于指定C语言编译器的路径和名称

        CMAKE_CXX_COMPILER                     用于查找C++编译器可执行文件路径的变量。     

        CMAKE_ASM_COMPILER                     用于指定GNU汇编器的路径,这个变量通常在配置C和C++程序的过程中被设置。

示例:

文件结构(忽略wuya 与 HD 俩个文件夹下的内容)

进入cmake 文件夹下 运行 cmake ..

即可得到 一个makefile 文件 运行make 动态链接库存于cmake下的lib文件夹内

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值