我是靠谱客的博主 从容板栗,最近开发中收集的这篇文章主要介绍CMake 学习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

CMake参考手册翻译:

 

CMake相关变量:

(1)PROJECT_SOURCE_DIR:指定源码路径。

(2)PROJECT_BINARY_DIR: 指定的是构建过程生成的build目录,如果没有将构建的过程文件指定到build目录,那么和PROJECT_SOURCE_DIR就是等价的(不推荐这样),为了使文件目录清晰,一般都是分开的。

(3)CMAKE_SORUCE_DIR:是指定义了顶级CMakeLists.txt的文件夹.同时注意PROJECT_SOURCE_DIR是指包含最近的project()命令的CMakeLists.txt的文件夹.

 

Binary Library Types

默认状态下,add_library() 命令定义了一个静态链接库,除非指定库链接类型。使用下面命令可以指定库类型:

add_library(archive SHARED archive.cpp zip.cpp)

add_library(archive STATIC archive.cpp zip.cpp)

变量BUILD_SHARED_LIBS能够改变add_library()命令默认编译共享库的行为。 在编译系统的定义作为整体的背景下,特定的库是否是静态库还是动态库很大程度上是不相关的,像命令、依赖指定和其他APIs接口工作差不多都与库的类型无关。库类型MODULE不同于以上两种方式,这样编译出的库放在target_link_libraries()命令的右边,不是直接链接的,作为插件在运行时进行加载。

add_library(archive MODULE 7z.cpp)

OBJECT 库类型也是没有链接的。的目标它定义了编译给定源文件产生文件的非归档集合。目标文件集合可以用作其他目标的输入源:

add_library(archive OBJECT archive.cpp zip.cpp lzma.cpp)

add_library(archiveExtras STATIC $<TARGET_OBJECTS:archive> extras.cpp)

add_executable(test_exe $<TARGET_OBJECTS:archive> test.cpp)

//2020/11/18

add_subdirrectory

add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

添加子目录到构建(build)目录。source_dir指定CMakeLists.txt和代码文件所在的目录。如果它是相对路径,那么它将相对于当前目录(CMAKE_SOURCE_DIR顶级CMakeLists.txt位置)进行计算(典型的用法),但它也可能是绝对路径。binary_dir指定放置输出文件的目录,如果它是相对路径,则会相对于当前输出目录进行计算,但也可以是绝对路径。如果没有指定binary_dir,则会在展开任何相对路径之前使用source_dir的值(通常情况下)

add_subdirectory

cmake学习

 

CMakeLists.tx组织QT工程:https://blog.csdn.net/LaineGates/article/details/9701611?utm_medium=distribute.pc_feed_404.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_feed_404.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecas

 

参考:

https://blog.csdn.net/wang15061955806/article/details/52901818

 

最后

以上就是从容板栗为你收集整理的CMake 学习的全部内容,希望文章能够帮你解决CMake 学习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部