美文网首页
学习CMake(二)

学习CMake(二)

作者: IT孤独者 | 来源:发表于2018-09-06 22:03 被阅读0次

上面写了一个大概,本篇文章主要介绍 target 的属性。target 指的就是 executable 文件和 liabrary 文件。

target_include_directories(), target_compile_definitions(), target_compile_options() 。
说实话,我不是很清楚这三个函数的作用,所以我只能根据我的经验来猜测他们大致的意思!

首先三个 command 都是针对 target 的,include_directories 应该是关联查找*.h的路径,compile_definitions 应该是定义编译的宏信息,compile_options 应该是给cmake命令用的,用来决定使用什么编译方式。

另外这个三个命令还有三个额外的模式private, public, interface。

private指的是将属性只应用到本target
public指的是将属性应用到本target和以后link的所有target
interface指的是讲属性应用到以后link的所有target

INCLUDE_DIERECTORIES,COMPILE_DEFINITIONS,COMPILE_OPTIONS 存入了具有private 和 public的模式

INTERFACE_INCLUDE_DIRECTORIES,INTERFACE_COMPILE_DEFINITIONS,INTERFACE_COMPILE_OPTIONS 存入具有 interface 和 public 的模式

set(srcs archive.cpp zip.cpp)
if (LZMA_FOUND)
  list(APPEND srcs lzma.cpp)
endif()
add_library(archive SHARED ${srcs})
if (LZMA_FOUND)
  # The archive library sources are compiled with -DBUILDING_WITH_LZMA
  target_compile_definitions(archive PRIVATE BUILDING_WITH_LZMA)
endif()
target_compile_definitions(archive INTERFACE USING_ARCHIVE_LIB)

add_executable(consumer)
# Link consumer to archive and consume its usage requirements. The consumer
# executable sources are compiled with -DUSING_ARCHIVE_LIB.
target_link_libraries(consumer archive)

上面的代码 archive 的 target 具有 -DBUILDING_WITH_LZMA,但是不具有 -DUSING_ARCHIVE_LIB,这个是 PRIVATE 和 INTERFACE 的区别,另外 consumer 的 target 不具有 -DBUILDING_WITH_LZMA,具有 -DUSING_ARCHIVE_LIB!

像 LZMA_FOUND 这个东西,就是一个OPTIONS,这个是可以用 compile_options 的命令指定。

相关文章

  • 学习CMake(二)

    上面写了一个大概,本篇文章主要介绍 target 的属性。target 指的就是 executable 文件和 l...

  • CMake学习笔记(二)——CMake语法

    搬运自本人 CSDN 博客:https://blog.csdn.net/ajianyingxiaoqinghan/...

  • cmake学习笔记6-catkin的CmakeList.txt讲

    引用cmake学习笔记-cmakelist.txt创建项目示例cmake的介绍和使用 Cmake实践推荐cmake...

  • CMake的安装与编译

    CMake下载地址:http://www.cmake.org/download/ 从二进制安装 CMake 官方提...

  • CMake学习

    CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用。 本文目录如下: [1、CMake介绍] [...

  • 教程

    通过例子学习CMake[https://sfumecjf.github.io/cmake-examples-Chi...

  • MAC平台 Opencv 集成

    第一步:安装 xcode 第二步:安装Cmake(https://cmake.org[https://cmake....

  • CMake 学习(二):生成库

    使用CMake生成可执行文件需要使用add_executable命令,简单的像下面这样: 就会生成一个名为hell...

  • CMake学习

    CMake学习 参考自《Cmake Practice --Cjacker》 基本语法规则 变量的引用 变量使用${...

  • 学习CMake(一)

    开篇立意,这个系列是为了让我能够更快更好的学习CMake这个工具,学习的资料源于cmake-bulidsystem...

网友评论

      本文标题:学习CMake(二)

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