cmake简单总结(基本语法)

Cmake 简要总结

cmake基本语法

project指定项目名称和版本号。
project(MyProject VERSION 1.0)

set(CMAKE_AUTOUIC ON)//使用autouic生成ui文件
set(CMAKE_AUTOMOC ON)//将所有源代码提供给MOC以生成MOC文件
set(CMAKE_AUTORCC ON)//为Qt目标自动处理rc

add_executable:指定生成可执行文件的源代码文件。
add_executable(MyProject main.cpp)

add_library:指定生成静态库或动态库的源代码文件。
add_library(MyLibrary STATIC lib.cpp)

target_link_libraries:指定链接的库文件。
target_link_libraries(MyProject MyLibrary)

include_directories:指定头文件的目录。
include_directories(include)

set:设置变量的值。
set(SRC_FILES main.cpp)

find_package:用来查找依赖包,理想情况下,find_package() 命令就能把一整个依赖包的头文件包含路径、
库路径、库名字、版本号等情况都获取到。
find_package(Qt6 REQUIRED COMPONENTS Charts)
REQUIRED:该选项表示如果没有找到需要的包就会停止并且报错.
COMPONENTS:在REQUIRED选项之后,或者如果没有指定REQUIRED选项但是指定了COMPONENTS选项,
在COMPONENTS后面就可以列出一些与包相关部分组件的清单.

file(GLOB_RECURSE ...):是一个用来匹配指定路径下所有符合通配符条件的文件的命令。
GLOB_RECURSE :是递归查找目录下的所有文件,file() 命令则可以用来获取文件列表。
file(GLOB_RECURSE HEADER_FILES "*.h")命令查找所有以.h 结尾的文件,
并将它们存储在 HEADER_FILES 变量中.

SOURCE_GROUP:将不同文件分类整理在一个文件夹中显示,
SOURCE_GROUP("Header Files" FILES ${HEADER_FILES}):将变量HEADER_FILES里面的文件,
显示的时候都显示在“Header Files”选项下面。

include_directories:用于指定包含头文件目录。应该在add_executable或add_library之前使用
include_directories(${TRT_INCLUDE_DIRS})

link_directories: 添加链接库,添加路径使链接器应在其中搜索库。

link_directories(${TRT_LIB_DIRS})

add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
name 表示库文件的名称,可以包含路径信息;
STATIC、SHARED 和 MODULE 表示库文件的类型,分别表示静态库、动态库和可加载模块;
EXCLUDE_FROM_ALL 表示该库不会被默认构建,需要手动指定构建。
source1 表示要添加的原文件
add_library(AI SHARED ${PROJECT_SOURCES})是编译${PROJECT_SOURCES}中的文件,并生成静态库文件。

target_link_libraries() 函数用于将一个或多个库文件链接到目标可执行文件或库文件中。
它的作用是将库文件与目标文件进行链接,使得目标文件可以使用库文件中定义的函数和变量。
target_link_libraries(<target> [PRIVATE | PUBLIC | INTERFACE] <library> [<library2> ...])
target 表示要链接库文件的目标文件(可执行文件或库文件);
PRIVATE 表示链接库文件时只在当前目标中使用;
PUBLIC 链接库文件时既在当前目标中使用也在该目标的依赖目标中使用,链接属性默认为 PUBLIC;
INTERFACE 仅在该目标的依赖目标中使用;
library 表示要链接的库文件的名称
target_link_libraries(AI PUBLIC ${OpenCV_Debug_LIBS}) 将opencv库文件链接到cmake项目AI中
综合例子:将 mylib 静态库文件链接到 myapp 可执行文件中:
add_executable(myapp main.cpp)
add_library(mylib STATIC mylib.cpp)
target_link_libraries(myapp mylib)

set_target_properties(target1 target2 ...PROPERTIES prop1 value1 prop2 value2 ... )
这个命令是设置目标的属性,该命令的语法是列出想要更改的所有目标,然后提供接下来想要设置的值。
set_target_properties(AI PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com)

CMake里面包含大量的内置变量,和自定义的变量相同,常用的有以下:
CMAKE_C_COMPILER:指定C编译器
CMAKE_CXX_COMPILER:指定C++编译器
EXECUTABLE_OUTPUT_PATH:指定可执行文件的存放路径
LIBRARY_OUTPUT_PATH:指定库文件的放置路径
CMAKE_CURRENT_SOURCE_DIR:当前处理的CMakeLists.txt所在的路径
CMAKE_BUILD_TYPE:控制构建的时候是Debug还是Release
命令:set(CMAKE_BUILD_TYPE Debug)
CMAKE_SOURCR_DIR:无论外部构建还是内部构建,都指的是工程的顶层目录(参考project命令执行之后,生成的_SOURCR_DIR以及CMake预定义的变量PROJECT_SOURCE_DIR)
CMAKE_BINARY_DIR:内部构建指的是工程顶层目录,外部构建指的是工程发生编译的目录(参考project命令执行之后,生成的_BINARY_DIR以及CMake预定义的变量PROJECT_BINARY_DIR)
CMAKE_CURRENT_LIST_LINE:输出这个内置变量所在的行
CMAKE_LIBRARY_OUTPUT_DIRECTORY:该变量用于指定库文件生成的目录。
CMAKE_RUNTIME_OUTPUT_DIRECTORY:该变量用于指定可执行文件生成的目录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值