概述
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 学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复