当前位置:网站首页>CMake使用基础汇总
CMake使用基础汇总
2022-07-28 04:22:00 【Mr FF】
target_include_directories做什么用?
指定目标包含的头文件路径。
里面的INTERFACE|PUBLIC|PRIVATE起什么作用?
INTERFACE:target对应的头文件使用
PRIVATE:target对应的源文件使用
PUBLIC:target对应的头文件、源文件都使用
例子:
target_include_directories(${LIBRARY_NAME}
PUBLIC
$<INSTALL_INTERFACE:include>
${XXX_INCLUDE_DIR}
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
project()是什么?
project用于指定cmake工程的名称,实际上,它还可以指定cmake工程的版本号(VERSION关键字)、简短的描述(DESCRIPTION关键字)、主页URL(HOMEPAGE_URL关键字)和编译工程使用的语言
(LANGUAGES关键字)
例子:
project(XXX LANGUAGES CXX VERSION 0.1.0)
add_library()是什么?
add_library命令用来使用指定的源文件向工程中添加一个目标库(生成库文件),主要有一下几种形式。
add_library(<name> [STATIC | SHARED | MODULE]
[EXCLUDE_FROM_ALL]
[<source>...])
添加一个从source列表列出的文件构建而来的目标名为name的库,name必须全局唯一。(构建库的源文件可以直接指定,也可以后续使用target_sources()指定。)
STATIC(静态库) SHARED(动态库) MODULE(模块库)用来指定库的类型。使用STATIC构建生成静态库(name.a),使用SHARED构建生成动态库(name.so)。
例子:
add_library(${LIBRARY_NAME} SHARED
${SRC_LIST}
)
aux_source_directory()是什么?
搜集所有在指定路径<dir>下的源文件的文件名,将输出结果列表储存在指定的变量<variable>中。
aux_source_directory(<dir> <variable>)
该命令旨在供使用显式模板实例化的项目使用。 模板实例化文件可以存储在Templates子目录中,并使用此命令自动收集,以避免手动列出所有实例化。
install()是什么?
install用于指定在安装时运行的规则。它可以用来安装很多内容,可以包括目标二进制、动态库、静态库以及文件、目录、脚本等
(执行make install时,会将指定的头文件,库安装到指定的位置。)
TARGETS:TARGET可以是很多种目标文件,最常见的是通过ADD_EXECUTABLE或者ADD_LIBRARY定义的目标文件,即可执行二进制、动态库、静态库。
ARCHIVE 静态库 ${CMAKE_INSTALL_LIBDIR} lib
LIBRARY 动态库 ${CMAKE_INSTALL_LIBDIR} lib
RUNTIME 可执行二进制文件 ${CMAKE_INSTALL_BINDIR} bin
PUBLIC_HEADER 与库关联的PUBLIC头文件 ${CMAKE_INSTALL_INCLUDEDIR} include
PRIVATE_HEADER 与库关联的PRIVATE头文件 ${CMAKE_INSTALL_INCLUDEDIR} include
为了符合一般的默认安装路径,如果设置了DESTINATION参数,推荐配置在安装目录变量下的文件夹。
下面的例子会将:可执行二进制myrun安装到${CMAKE_INSTALL_BINDIR}目录,动态库libmylib.so安装到${CMAKE_INSTALL_LIBDIR}目录,静态库libmystaticlib.a安装到${CMAKE_INSTALL_LIBDIR}目录。
例子1:
INSTALL(TARGETS myrun mylib mystaticlib
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
例子2:
install(TARGETS ${LIBRARY_NAME} EXPORT ${PROJECT_NAME}-targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
目录的安装,使用DIRECTORY, 该命令将一个或多个目录的内容安装到给定的目的地,目录结构被逐个复制到目标位置。每个目录名称的最后一个组成部分都附加到目标目录中,但是可以使用后跟斜杠来避免这种情况,因为它将最后一个组成部分留空。
DIRECTORY后面如果是abc意味着abc这个目录会安装在目标路径下,abc/意味着abc这个目录的内容会被安装在目标路径下,而abc目录本身却不会被安装。即,如果目录名不以/结尾,那么这个目录将被安装为目标路径下的abc,如果目录名以/结尾,代表将这个目录中的内容安装到目标路径,但不包括这个目录本身。
例子3:
install(DIRECTORY include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
COMPONENT dev
)
边栏推荐
- The State Administration of market supervision exposes typical cases of food safety
- 20-Openwrt crond crontab
- VAE generation model (with VAE implementation MNIST code)
- 《Intel Arria 10 Avalon-MM DMA Interface for PCI Express Solutions User Guide》文档学习
- Slice切片
- H265/hevc noun explanation -- CTU, CTB, Cu, CB, Tu, PU, TB, Pb, LCU, slice, tile, chroma, luma, I frame, B frame, P frame
- Learn regular expressions (regexp)
- Password key hard coding check
- Slice slice
- .net upload files through boundary
猜你喜欢
![[kinematics] simulation of orbital angular momentum based on MATLAB [including Matlab source code 1971]](/img/5e/dfe029490183ee74687606941ce98e.jpg)
[kinematics] simulation of orbital angular momentum based on MATLAB [including Matlab source code 1971]

Machine learning 06: Decision Tree Learning

Detailed explanation of pl/sql parameters ("box model")

Cyber Nuwa, how to make digital people?

MySQL:数据类型和运算符

null安全与异常

Go structure

Important SQL server functions - other functions

Fedformer MOE module

Reading of a unified generic framework for aspect based sentimental analysis
随机推荐
Seamless support for hugging face community, colossal AI low-cost and easy acceleration of large model
idea2022更改本地仓库,配置阿里云中央仓库
虚拟机类加载机制
MySQL: data types and operators
Kingbasees security guide of Jincang database -- 6.2. Configuration files related to authentication
Information system project manager (2022) - key content: Project Risk Management (11)
[reach out to Party welfare] the easiest way to scan the H5 page in wechat
金仓数据库KingbaseES安全指南--6.1. 强身份验证简介
上班摸鱼打卡模拟器微信小程序源码
Un7.27: how to successfully build a ruoyi framework project in idea?
What is the account opening process of qiniu business school? Is it safe?
RT thread changes the print serial port (add other functions on the basis of BSP)
H265/HEVC名词解释-- CTU,CTB,CU,CB,TU,PU,TB,PB,LCU,Slice,Tile,Chroma,Luma,I帧,B帧,P帧
How to select reliable securities analysts?
Power consumption: leakage power
Remove screen cutting and copying restrictions
Cloud native Devops status survey questionnaire solicitation: kodelurover launched jointly with oschina
Information system project manager (2022) - key content: Project Portfolio Management (19)
C # cross thread refresh foreground UI
Information system project manager (2022) - key content: Information System Security Management (20)