cmake 常见命令

作者: 佩玖吟 | 来源:发表于2021-09-15 23:32 被阅读0次

cmake

  • cmake_minimum_required

    命令语法:cmake_minimum_required(VERSION major[.minor[.patch[.tweak]]][FATAL_ERROR])

    命令简述:用于指定需要的 CMake 的最低版本

    使用范例:cmake_minimum_required(VERSION 2.8)

  • add_executable

    命令语法:add_executable(<name> [WIN32] [MACOSX_BUNDLE][EXCLUDE_FROM_ALL] source1 source2 … sourceN)

    命令简述:用于指定从一组源文件 source1 source2 … sourceN 编译出一个可执行文件且命名为 name

    使用范例:add_executable(Main ${DIR_SRCS})

  • add_library

    命令语法:add_library([STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1source2 … sourceN)

    命令简述:用于指定从一组源文件 source1 source2 … sourceN 编译出一个库文件且命名为 name

    使用范例:add_library(Lib ${DIR_SRCS}),和add_executable相比,这里是成的库,而add_executable是生成可执行文件。因此,这里的STATIC、SHARED分别表示在生成的是静态库还是动态库。

  • target_link_libraries vs link_libraries

    两则关系: link_libraries用在add_executable之前,target_link_libraries用在add_executable之后; link_libraries用来链接静态库,target_link_libraries用来链接导入库,即按照header file + .lib + .dll方式隐式调用动态库的.lib库

    命令语法:target_link_libraries(<target> [item1 [item2 […]]][[debug|optimized|general] ] …)

    命令简述:用于指定 target 需要链接 item1 item2 …。这里 target 必须已经被创建,链接的 item 可以是已经存在的 target(依赖关系会自动添加)

    使用范例:target_link_libraries(Main Lib);link_libraries(/home/myproject/libs)

    解释:为Main项目(可以为执行文件,也可以为库)添加依赖库Lib。Lib可以为多个。比如:动态库所在目录为/home/myproject/libs,那么在add_executable之前使用link_libraries(/home/myproject/libs)指明动态库位置,在add_executable之后,只需给出动态链接库的库名字就行。target_link_libraries(Main -lcurl)

  • set

    命令语法:set(<variable> <value> [[CACHE <type><docstring> [FORCE]] | PARENT_SCOPE])

    命令简述:用于设定变量 variable 的值为 value。如果指定了 CACHE 变量将被放入 Cache(缓存)中。

    使用范例1:set(ProjectName Main);

    使用范例2:set(var a;b;c) <=> set(var a b c) #定义变量var并赋值为a;b;c这样一个string list

  • include_directories

    命令语法:include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 …)

    命令简述:用于设定目录,这些设定的目录将被编译器用来查找 include 文件

    使用范例:include_directories(${PROJECT_SOURCE_DIR}/lib),添加在工程目录下的lib子文件夹目录

  • target_include_directories():指定目标包含的头文件路径

相关文章

网友评论

    本文标题:cmake 常见命令

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