CMake PUBLIC / PRIVATE / INTERFACE

2024-05-31 04:32
文章标签 cmake public private interface

本文主要是介绍CMake PUBLIC / PRIVATE / INTERFACE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在使用Cmake时,经常会遇到以下两个命令

  • target_include_directories
  • target_link_libraries

它们的使用方法比较类似,例如

target_include_directories(<Target>PUBLIC <dirs>…PRIVATE <dirs>…INTERFACE <dirs>…
)

那么这三种添加头文件夹的方式有什么区别呢?

假如有一个库lib,还有一个应用exe,其中exe依赖lib

lib使用:
• PUBLIC,两个项目都会添加include
• PRIVATE,只有lib会添加include
• INTERFACE,只有exe会添加include

问题来了,什么情况下会用到INTERFACE?

其实一般在开发SDK时,都会合并头文件,然后供外部调用,这时这个合成的头文件只需要被外部访问

这篇关于CMake PUBLIC / PRIVATE / INTERFACE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017378

相关文章

iOS:编译时出现no such file or directory:xxx以及use twice...filenames are used to distinguish private dec

简    注册  登录   添加关注 作者  婉卿容若 2016.04.29 11:22 写了21870字,被16人关注,获得了14个喜欢 iOS:编译时出现"no such file or directory:xxx"以及"use twice...filenames are used to distinguish private

CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中

CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中 code review! 文章目录 CMake笔记之CMAKE_INSTALL_PREFIX详解以及ROS中可执行文件为什么会在devel_lib中1.`CMAKE_INSTALL_PREFIX`详解变量作用设置 `CMAKE_INSTALL_PREFIX`示例影响范围常

【C++】Cmake入门|掌握cmake的基本操作

前言: CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。 本文主要讲述在Linux下如何使用CMake来编译我们的程序。 CmakeLists.txt->makefile->make就可以了,使用Cmak

用Visual Studio调试CMake项目并生成Visual Studio工程

一. 在Windows系统上安装CMake 访问CMake官方网站https://cmake.org/download,或通过文末链接下载:在下载页面上,找到并点击“Download”链接以获取最新的稳定版本的CMake。请注意,虽然新版本可能包含更多功能和改进,但使用稳定版本通常更为可靠。参考文章2中提到的版本为3.26.0,但您应该选择最新的稳定版本。 下载并安装CMake

tessy 单元测试 TDE 界面 数据无法填充:the test object interface is incomplete

目录 1,失败现象 2,失败原因 3,解决办法 1,失败现象         函数名字前的图标高度缩小为正常的一半,TDE界面的数据无法填充。错误提示为题目中的英文。 2,失败原因         TIE界面,此函数的参数的 passing 方向有 unknown,未正确识别。 3,解决办法         将 interface 栏的所有参数的 passing 和

interface Ref<T = any> 这是什么写法?为什么写接口还需要加上<T = any>

问: export interface Ref<T = any> { value: T [RefSymbol]: true } 这里既然是interface接口,为什么还有<T = any>这是什么意思? 回答: <T = any> 中的 <T> 表示这是一个泛型参数,它可以在接口中作为类型的占位符,在实际使用时被具体的类型替代。= any 则表示默认类型为 any,意味着如果没有明

cmake find_package 原理简介以及使用说明

下面简单介绍Cmake 如何使用find_package命令对外部库进行查找: cmake本身不提供任何关于搜索库的便捷方法,也不会对库本身的环境变量进行设置。它仅仅是按照优先级顺序在指定的搜索路径进行查找Findxxx.cmake文件和xxxConfig.cmake文件(其中xxx代表库的名字,特别注意的是有大小写之分),这两个文件大体上是没有区别的,cmake能够找到这两个文件中的任何一个,

在Linux下使用CMake加载自定义路径第三方库的指南

CMake是一个强大的跨平台构建系统,广泛应用于C++项目中。它不仅能够处理标准的构建过程,还可以灵活地集成各种第三方库,包括自定义路径的库、已编译的共享库(.so 文件),以及仅包含头文件的库(如Eigen)。在这篇博客中,我们将探讨如何在Linux环境下使用CMake加载这些不同类型的第三方库。 1. 加载自定义路径的第三方库         有时需要使用位于自定义路径

2024-06-21 Cmake中使用C++23标准模块的设置

点击 <C 语言编程核心突破> 快速C语言入门 Cmake中使用C++23标准模块的设置 前言一、示例使用clang18二、本来想吐槽Cmake八百字, 想想算了总结 前言 要解决问题: cmake对modules的支持已经有了, 但是, 没有深入摸索, 估计你还是不会用. 想到的思路: 疯狂试验. 其它的补充: 为什么不向xmake学学, 非要搞那么晦涩.