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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值