zoukankan      html  css  js  c++  java
  • cmake 学习笔记(一) buildsystem

    参见网址:

    http://www.cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html

    Introduction

    基于CMake的构建系统是一个高度化的条理分明的目标集合。每一个目标对应着一个可执行文件或者库,或者是一个自定义的包含自定义命令的目标。在构建系统中表达的目标之间的依赖关系,用来确定构建顺序和发生变化时的再生规则。

    Binary targets

    可执行文件和库文件分别通过命令 add_executable() 和 add_library() 来定义。最终生成的二进制文件根据目标平台有着合适的前缀名、后缀名和扩展名。二进制目标之间的依赖关系是通过命令 target_link_libraries() 来指定的:

    add_library(archive archive.cpp zip.cpp lzma.cpp)
    add_executable(zipapp zipapp.cpp)
    target_link_libraries(zipapp archive)

     "archive" 被定义成一个静态库--它包含的编译目标来自文件"archive.cpp", "zip.cpp" 和 "lzma.cpp"。

     "zipapp" 被定义为一个可执行文件--编译并连接 "zipapp.cpp"。当连接可执行文件"zipapp" 时,静态库文件 "archive" 被连接进来。

    Binary Executables

    如下指令指定一个可执行目标:

    add_executable(mytool mytool.cpp)

    例如 add_custom_command() 指令(产生构建时的运行规则),可以显然地使用一个 "EXECUTALBE" 目标作为一个可执行的 "COMMAND"。构建系统的规则会确保在运行这个命令前先构建这个可执行的文件。

    Binary Library Types

    Normal Libraries

    默认情况下,指令 "add_library()" 定义一个 static library,除非指定了类型。类型可以通过如下命令指定:

    add_library(archive SHARED archive.cpp zip.cpp lzma.cpp)
    
    add_library(archive STATIC  archive.cpp zip.cpp lzma.cpp)

    可以通过使能变量 "BUILD_SHARED_LIBS" 来使得 add_library() 默认地构建 shared libraries。

     在构建系统上下文中,特定的库是否指定为 SHARED 或者 STATIC 是毫不相干的---构建指令、依赖规则和其他的 APIs 不管库的类型以类似的方式工作。

    而库类型 MODULE 是不相同的,通常它不会被链接,它也不会用在构建命令 target_link_libraries() 的右手边。

    Object Libraries

  • 相关阅读:
    音乐情感识别
    SoftmaxWithLoss函数和师兄给的loss有哪些区别呢
    内积层和全连接层是一样的
    caffe中的Local Response Normalization (LRN)有什么用,和激活函数区别
    caffe官网的部分翻译及NG的教程
    couldn't import dot_parser
    apt-get -f install
    Spring常用注解总结 hibernate注解
    Set Map List Iterator
    iframe 与frameset
  • 原文地址:https://www.cnblogs.com/LinTeX9527/p/4810502.html
Copyright © 2011-2022 走看看