Cmake手册详解

合集下载

超详细的cmake入门教程

超详细的cmake入门教程

超详细的cmake⼊门教程什么是cmake你或许听过好⼏种 Make ⼯具,例如 GNU Make ,QT 的 qmake ,微软的 MSnmake,BSD Make(pmake),Makepp,等等。

这些 Make ⼯具遵循着不同的规范和标准,所执⾏的 Makefile 格式也千差万别。

这样就带来了⼀个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。

⽽如果使⽤上⾯的 Make ⼯具,就得为每⼀种标准写⼀次 Makefile ,这将是⼀件让⼈抓狂的⼯作。

CMake CMake附图 1 CMake就是针对上⾯问题所设计的⼯具:它⾸先允许开发者编写⼀种平台⽆关的 CMakeList.txt ⽂件来定制整个编译流程,然后再根据⽬标⽤户的平台进⼀步⽣成所需的本地化 Makefile 和⼯程⽂件,如 Unix 的 Makefile 或Windows 的 Visual Studio ⼯程。

从⽽做到“Write once, run everywhere”。

显然,CMake 是⼀个⽐上述⼏种 make 更⾼级的编译配置⼯具。

⼀些使⽤ CMake 作为项⽬架构系统的知名开源项⽬有 VTK、ITK、KDE、OpenCV、OSG 等。

在 linux 平台下使⽤ CMake ⽣成 Makefile 并编译的流程如下:1. 编写 CMake 配置⽂件 CMakeLists.txt 。

2. 执⾏命令 cmake PATH 或者 ccmake PATH ⽣成 Makefile。

其中, PATH 是 CMakeLists.txt 所在的⽬录。

(ccmake 和cmake 的区别在于前者提供了⼀个交互式的界⾯)3. 使⽤ make 命令进⾏编译。

⼊门案例:单个源⽂件本节对应的源代码所在⽬录:Demo1。

对于简单的项⽬,只需要写⼏⾏代码就可以了。

例如,假设现在我们的项⽬中只有⼀个源⽂件 ,该程序的⽤途是计算⼀个数的指数幂。

cmake参考手册

cmake参考手册

cmake参考手册
CMake是一个跨平台的开源构建系统,它使用简单的配置文件
来控制软件构建过程。

CMake的参考手册包含了丰富的信息,涵盖
了CMake的各个方面,包括语法、命令、变量、模块等。

下面我将
从多个角度来介绍CMake的参考手册。

首先,CMake的参考手册包括了CMake语法的详细说明,包括
如何编写CMakeLists.txt文件、如何定义变量、如何使用控制流语
句等。

这些内容对于初学者来说非常重要,可以帮助他们快速掌握CMake的基本语法和用法。

其次,CMake的参考手册还包括了CMake命令的详细说明,这
些命令包括了用于控制构建过程的各种命令,比如add_executable、add_library、target_link_libraries等。

了解这些命令的用法可
以帮助开发者更好地控制项目的构建过程。

另外,CMake的参考手册还包括了CMake变量的详细说明,这
些变量包括了系统预定义的变量、用户自定义的变量等。

了解这些
变量的含义和用法可以帮助开发者更好地理解CMake的内部工作机制。

此外,CMake的参考手册还包括了CMake模块的详细说明,这
些模块包括了用于扩展CMake功能的各种模块,比如FindXXX模块、UseXXX模块等。

了解这些模块的用法可以帮助开发者更好地利用CMake来管理复杂的项目。

总的来说,CMake的参考手册是CMake开发者和用户的重要参
考资料,它包含了丰富的信息,可以帮助开发者更好地理解和使用CMake。

希望我的回答能够帮助你更好地了解CMake的参考手册。

cmake使用手册

cmake使用手册

CMake是一个跨平台的开源构建系统,用于管理项目的构建过程。

以下是CMake的一般使用手册的大纲。

请注意,这里提供的是一般性的信息,具体的用法可能根据项目的需要而有所不同。

1. 安装CMake:-下载并安装适用于你操作系统的CMake 版本。

2. CMakeLists.txt 文件:-创建项目根目录下的CMakeLists.txt 文件。

-指定项目的名称、最低CMake 版本等基本信息。

3. 添加源文件和头文件:-使用add_executable 或add_library 命令添加源文件。

-使用include_directories 添加头文件目录。

# CMakeLists.txt 示例cmake_minimum_required(VERSION 3.10)project(MyProject)# 添加可执行文件add_executable(my_executable main.cpp)# 添加头文件目录include_directories(include)4. 添加依赖库:-使用target_link_libraries 命令添加依赖库。

# 添加依赖库target_link_libraries(my_executable my_library)5. 配置编译选项:-使用set 命令设置编译选项。

-使用add_compile_options 设置编译选项。

# 配置编译选项set(CMAKE_CXX_STANDARD 11)# 或者add_compile_options(-Wall -Wextra)6. 生成Makefile 或其他构建文件:-在项目根目录下执行cmake . 命令生成构建文件。

# 在项目根目录下执行cmake .7. 构建项目:-使用生成的构建文件(如Makefile)执行构建命令。

# 使用Makefile 构建make8. 安装和测试:-使用install命令指定安装目标。

-使用enable_testing启用测试,并使用add_test 添加测试。

cmake常用变量和常用环境变量查表手册---整理.

cmake常用变量和常用环境变量查表手册---整理.

cmake常⽤变量和常⽤环境变量查表⼿册---整理.⼀,cmake 变量引⽤的⽅式:前⾯我们已经提到了,使⽤${}进⾏变量的引⽤。

在 IF 等语句中,是直接使⽤变量名⽽不通过${}取值⼆,cmake ⾃定义变量的⽅式:主要有隐式定义和显式定义两种,前⾯举了⼀个隐式定义的例⼦,就是 PROJECT 指令,他会隐式的定义<projectname>_BINARY_DIR 和<projectname>_SOURCE_DIR 两个变量。

显式定义的例⼦我们前⾯也提到了,使⽤ SET 指令,就可以构建⼀个⾃定义变量了。

⽐如:SET(HELLO_SRC main.SOURCE_PATHc),就 PROJECT_BINARY_DIR 可以通过${HELLO_SRC}来引⽤这个⾃定义变量了.三,cmake 常⽤变量:1,CMAKE_BINARY_DIRPROJECT_BINARY_DIR<projectname>_BINARY_DIR这三个变量指代的内容是⼀致的,如果是 in source 编译,指得就是⼯程顶层⽬录,如果是 out-of-source 编译,指的是⼯程编译发⽣的⽬录。

PROJECT_BINARY_DIR 跟其他指令稍有区别,现在,你可以理解为他们是⼀致的。

2,CMAKE_SOURCE_DIRPROJECT_SOURCE_DIR<projectname>_SOURCE_DIR这三个变量指代的内容是⼀致的,不论采⽤何种编译⽅式,都是⼯程顶层⽬录。

也就是在 in source 编译时,他跟 CMAKE_BINARY_DIR 等变量⼀致。

PROJECT_SOURCE_DIR 跟其他指令稍有区别,现在,你可以理解为他们是⼀致的。

3,CMAKE_CURRENT_SOURCE_DIR指的是当前处理的 CMakeLists.txt 所在的路径,⽐如上⾯我们提到的 src ⼦⽬录。

CMake手册详解(十二)

CMake手册详解(十二)

CMake手册详解(十二)CMD#30:find_library 查找一个库文件find_library(<VAR> name1 [path1 path2 ...])这是该命令的简写版本,在大多数场合下都已经够用了。

它与命令find_library(<VAR> name1 [PATHS path1 path2 ...])等价。

find_library(<VAR>name | NAMES name1 [name2 ...][HINTS path1 [path2 ... ENV var]][PATHS path1 [path2 ... ENV var]][PATH_SUFFIXES suffix1 [suffix2 ...]][DOC "cache documentation string"][NO_DEFAULT_PATH][NO_CMAKE_ENVIRONMENT_PATH][NO_CMAKE_PATH][NO_SYSTEM_ENVIRONMENT_PATH][NO_CMAKE_SYSTEM_PATH][CMAKE_FIND_ROOT_PATH_BOTH |ONLY_CMAKE_FIND_ROOT_PATH |NO_CMAKE_FIND_ROOT_PATH])该命令用来查找一个库文件。

一个名为<VAR>的cache条目会被创建来存储该命令的结果。

如果找到了该库文件,那么结果会存储在该变量里,并且搜索过程将不再重复,除非该变量被清空。

如果没有找到,结果变量将会是<VAR>-NOTFOUND,并且在下次使用相同变量调用find_library命令时,搜索过程会再次尝试。

在NAMES参数后列出的文件名是要被搜索的库名。

附加的搜索位置在PATHS参数后指定。

如果再HINTS或者PATHS字段中设置了ENV变量var,环境变量var将会被读取并从系统环境变量转换为一个cmake风格的路径list。

路径管理工具CMake的使用指南

路径管理工具CMake的使用指南

路径管理工具CMake的使用指南1.简介 CMake是一个开源的跨平台的路径管理工具,它采用一种类似于脚本的方式来管理项目的构建过程。

CMake提供了一套简单而强大的语法,可以帮助开发人员轻松地管理源码、依赖库和构建目录,从而实现跨平台的项目构建。

本文将介绍CMake的基本用法和一些常用功能,帮助大家更好地使用这个工具。

2.安装和配置我们需要下载并安装CMake。

可以从官方网站下载适合自己操作系统的安装包,并按照安装向导进行安装。

安装完成后,添加CMake到系统的环境变量中,以便在命令行中可以直接使用CMake命令。

3.CMakeLists.txt文件 CMake使用CMakeLists.txt文件来描述项目的构建规则。

在项目的根目录下创建一个CMakeLists.txt文件,并按照以下结构填写内容:cmake_minimum_required(VERSION 3.10)project(MyProject)# 添加源文件add_executable(MyApp main.cpp)# 添加依赖库target_link_libraries(MyApp lib1 lib2)# 设置编译选项set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")在CMakeLists.txt文件中,我们可以设置项目的最低CMake版本,指定项目的名称,添加源文件和依赖库,设置编译选项等。

可以根据项目的实际需求来修改和扩展CMakeLists.txt文件中的内容。

4.生成项目在项目的根目录下打开命令行窗口,执行以下命令来生成项目的构建文件:cmake .这会在当前目录下生成一个用于构建项目的Makefile文件(或者是其他构建系统所需的文件),构建过程中的中间文件和目标文件将会放在一个名为build的文件夹中。

5.编译项目执行以下命令来编译项目:make这会根据之前生成的Makefile文件来进行项目的编译。

Cmake学习手册

Cmake学习手册

Cmake学习笔记1、一个比较典型的例子共享库和静态库的cmake典型实例# This is a typical library CMakeList.txt# Modify the corresponding places to adapt to own setting# Write by jfbai.cmake_minimum_required (VERSION 2.8)# Add Include, Library path hereinclude_directories(/usr/local/include)link_directories(/usr/local/lib)# Set library source setset(LIB_SRC xxx.cpp xxx.cpp)# Generate shared libraryadd_library(xxx_shared SHARED ${LIB_SRC})set_target_properties(xxx_shared PROPERTIES OUTPUT_NAME "xxx")set_target_properties(xxx_shared PROPERTIES CLEAN_DIRECT_OUTPUT 1) set_target_properties(xxx_shared PROPERTIES VERSION 1.2 SOVERSION 1) target_link_libraries(xxx_shared xx1.so xx2.so xx1.a xx2.a)get_target_property(OUTPUT_VALUE xxx_shared OUTPUT_NAME)message(STATUS "Shared library outname:" ${OUTPUT_VALUE})# Generate static libraryadd_library(xx_static STATIC ${LIBLM_SRC})set_target_properties(xx_static PROPERTIES OUTPUT_NAME "xxx")set_target_properties(xx_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) target_link_libraries(xx_static xx1.so xx2.so xx1.a xx2.a)get_target_property(OUTPUT_VALUE xx_static OUTPUT_NAME)message(STATUS "Static library outname:" ${OUTPUT_VALUE})# Set library install pathinstall(TARGETS xxx_shared xxx_staticLIBRARY DESTINATION libARCHIVE DESTINATION lib)可执行程序的cmake典型实例# This is a typical executable CMakeList.txt# Modify the corresponding places to adapt to own setting# Write by jfbai.cmake_minimum_required(VERSION 2.8)# Add Include, Library path hereinclude_directories(~/projects/Linux_Project/include)link_directories(~/projects/Test_lib/build/libLM/lib)# Set executable source setset(ALL_SRC libLMTest.cpp)# Generate executable fileadd_executable(libLM_Test ${ALL_SRC})target_link_libraries(libLM_Test libLM.so)总规划的cmake典型实例# This is a typical executable CMakeList.txt# Modify the corresponding places to adapt to own setting# Write by jfbai.cmake_minimum_required(VERSION 2.8)# Set cmake list hereadd_subdirectory(libLM)add_subdirectory(libLM_Test)2、总体说明首先,cmake是自动生成makefile的工具,它和make工具是互补的,而不是竞争的关系;有点类似automake 的作用。

CMake手册详解(十八)--include相关的命令

CMake手册详解(十八)--include相关的命令

CMake手册详解(十八)--include相关的命令CMD#45 : include 从给定的文件中读取CMake的列表文件。

include(<file|module> [OPTIONAL] [RESULT_VARIABLE <VAR>][NO_POLICY_SCOPE])从给定的文件中读取CMake的清单文件代码。

在清单文件中的命令会被立即处理,就像它们是写在这条include命令展开的地方一样。

如果指定了OPTIONAL选项,那么如果被包含文件不存在的话,不会报错。

如果指定了RESULT_VARIABLE选项,那么var或者会被设置为被包含文件的完整路径,或者是NOTFOUND,表示没有找到该文件。

如果指定的是一个模块(module)而不是一个文件,查找的对象会变成路径CMAKE_MODULE_PATH下的文件<modulename>.camke。

参考cmake_policy()命令文档中关于NO_POLICY_SCOPE选项的讨论。

CMD#46 : include_directories 为构建树添加包含路径。

include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)将给定的路径添加到编译器搜索包含文件(.h文件)的路径列表中。

缺省情况下,该路径会被附加在当前路径列表的后面。

这种缺省行为可以通过设置CMAKE_include_directories_BEFORE变量为ON 被改变。

通过将该变量改变为BEFORE或AFTER,你可以在追加和附加在前端这两种方式中选择,而不用理会缺省设置。

如果指定了SYSTEM选项,编译器将会认为该路径是某种平台上的系统包含路径。

CMD#47 : include_external_msproject 在一个workspace中包含一个外部的Microsoft工程。

include_external_msproject(projectname location dep1 dep2 ...)在生成的workspace文件中包含一个外部的Microsoft工程。

cmake手册

cmake手册

cmake手册概述CMake是一个开源的、跨平台的构建工具。

它使用简单的配置文件和命令来生成建构系统文件(如makefile或Visual Studio解决方案),从而实现自动化构建过程。

本文将详细介绍CMake的基本使用方法和常见功能。

安装要使用CMake,首先需要将其安装在计算机上。

以下是安装CMake的一般步骤:1.在CMake的官方网站上下载适合您操作系统的安装包。

2.运行安装包,按照提示完成安装过程。

3.验证CMake是否成功安装,可以在终端(Linux或macOS)或命令提示符(Windows)中运行cmake --version命令,如果输出了CMake的版本信息,则表示安装成功。

CMakeLists.txt文件CMake使用CMakeLists.txt文件来定义项目的构建规则。

每个项目都需要一个CMakeLists.txt文件,其中包含了项目所需的信息和配置。

以下是一个简单的CMakeLists.txt文件示例:cmake_minimum_required(VERSION 3.12) # 指定CMake的最低版本要求project(MyProject) # 定义项目名称add_executable(MyExecutable main.cpp) # 添加一个可执行文件target_link_libraries(MyExecutable MyLibrary) # 链接一个库文件基本命令CMake提供了一系列命令来定义项目的构建规则。

以下是一些常用的CMake命令:add_executableadd_executable命令用于添加一个可执行文件到项目中。

它接受一个参数,即可执行文件的名称及相关的源文件。

add_executable(MyExecutable main.cpp) # 添加一个可执行文件MyExecutable,包括main.cpp源文件add_libraryadd_library命令用于添加一个库文件到项目中。

CMake手册详解(十六)

CMake手册详解(十六)

CMake手册详解(十六)CMD#35 : foreach 对一个list中的每一个变量执行一组命令。

foreach(loop_var arg1 arg2 ...)COMMAND1(ARGS ...)COMMAND2(ARGS ...)...endforeach(loop_var)所有的foreach和与之匹配的endforeach命令之间的命令会被记录下来而不会被调用。

等到遇到endforeach命令时,先前被记录下来的命令列表中的每条命令都会为list中的每个变量调用一遍。

在每次迭代中,循环变量${loop_var}将会被设置为list中的当前变量值。

foreach(loop_var RANGE total)foreach(loop_var RANGE start stop [step])foreach命令也可以遍历一个人为生成的数据区间。

遍历的方式有三种:*如果指定了一个数字,区间是[0, total]。

*如果指定了两个数字,区间将会是第一个数字到第二个数字。

*第三个数字是从第一个数字遍历到第二个数字时的步长。

foreach(loop_var IN [LISTS [list1 [...]]][ITEMS [item1 [...]]])该命令的含义是:精确遍历一个项组成的list。

LISTS选项后面是需要被遍历的list变量的名字,包括空元素(一个空字符串是一个零长度list)。

ITEMS选项结束了list参数的解析,然后在迭代中引入所有在其后出现的项。

(猜测是用list1中的项item1,依次类推,为循环变量赋值。

——译注)CMD#36 : function 开始记录一个函数,为以后以命令的方式调用它做准备。

function(<name> [arg1 [arg2 [arg3 ...]]])COMMAND1(ARGS ...)COMMAND2(ARGS ...)...endfunction(<name>)定义一个名为<name>的函数,它以arg1 arg2 arg3 (...)为参数。

cmake手册

cmake手册

cmake手册CMake是一个开源的跨平台构建工具,用于管理和生成项目的构建过程。

它使用简单的配置文件来描述构建过程,并生成适用于不同操作系统和编译器的构建脚本。

CMake的主要优点之一是其灵活性和可扩展性。

它支持多种构建系统,包括Unix Makefiles、Ninja、Visual Studio等,使开发人员能够根据项目的需要选择最合适的构建系统。

此外,CMake还可以集成到各种集成开发环境(IDE)中,如CLion、Visual Studio等,提供更便捷的开发体验。

使用CMake,您只需编写一个CMakeLists.txt文件来描述您的项目。

这个文件包含一系列指令,用于指定源文件、库依赖关系、编译选项等。

CMake根据这些指令生成相应的构建脚本,如Makefile或Visual Studio项目文件,使您能够轻松地构建和管理项目。

除了基本的构建功能,CMake还提供了许多其他功能来帮助您更好地管理项目。

例如,您可以使用CMake生成安装脚本,将项目安装到目标系统的指定位置。

您还可以使用CMake生成配置文件,用于导出项目的头文件、库文件和编译选项,以便其他项目可以方便地使用您的代码。

CMake还支持模块化的构建,使您能够将项目分成多个模块,并按需构建和安装这些模块。

这样,您可以更好地组织和管理项目的代码,提高代码的可重用性和维护性。

总之,CMake是一个强大而灵活的构建工具,为开发人员提供了简化项目构建过程的便利。

通过使用CMake,您可以轻松地管理和构建各种类型的项目,并享受到其丰富的功能和易用性所带来的便利。

无论您是开发小型应用程序还是大型跨平台项目,CMake都值得一试。

Cmake使用手册

Cmake使用手册
简单例子:MAIN.C
我们以一个简单例子开始,逐步解析cmake的完整构建过 程
创建t1目录,在此目录下建立main.c main.c文件内容: //main.c #include <stdio.h> int main() {
printf(“Hello World from t1 Main!\n”); return 0; }
构建多目录工程
在tmp目录下创建文件CMakeLists.txt,内容如下: PROJECT (TMP)
ADD_DEFINITIONS(-DPOSIX)
AUX_SOURCE_DIRECTORY(source/a DIR_SRC_A) AUX_SOURCE_DIRECTORY(source/b DIR_SRC_B)
存储
动态库构建
以前面多目录工程tmp为例,只要将CMakeLists.txt改为如下 即可:
PROJECT (TMP) ADD_DEFINITIONS(-DPOSIX) ADD_DEFINITIONS(-DDEBUG)
AUX_SOURCE_DIRECTORY(source/a DIR_SRC_A) AUX_SOURCE_DIRECTORY(source/b DIR_SRC_B) SET(TMP_SRCS
printf("this is func_创建目录b,在b目录下创建文件 bfile.c:
内容如下 #include "../../include/tmp.h" #include <stdio.h> void func_b() { printf("this is func_b\n"); }
简单例子: CMAKELISTS.TXT

CMake手册详解(二十一)

CMake手册详解(二十一)

CMake手册详解(二十一)上个月为了一个新加的功能披星戴月,没有时间照顾博文,很长时间木有更新。

一直到长假即将收假,才有了时间重新打理这行将荒芜的文章。

所以嘛,这次一定要多翻译些,好弥补下上个月的缺失~~ ============================================================================ CMD#58: option 为用户提供一个可选项。

option(<option_variable> "描述选项的帮助性文字" [initial value])该命令为用户提供了一个在ON和OFF中做出选择的选项。

如果没有指定初始值,将会使用OFF作为初值。

如果有些选项依赖于其他选项的值,参见CMakeDependentOption模块的帮助文件。

CMD#59: output_required_files 输出一个list,其中包含了一个给定源文件所需要的其他源文件。

output_required_files(srcfile outputfile)输出一个指定的源文件所需要的所有源文件的list。

这个list会写到outputfile变量中。

该命令的功能是将srcfile的依赖性写出到outputfile中,不过该命令将尽可能地跳过.h文件,搜索依赖中的.cxx,.c和.cpp文件。

CMD#60: project 为整个工程设置一个工程名。

project(<projectname> [languageName1 languageName2 ... ] )为本工程设置一个工程名。

而且,该命令还将变量<projectName>_BINARY_DIR和<projectName>_SOURCE_DIR设置为对应值。

后面的可选项还可以让你指定你的工程可以支持的语言。

比如CXX(即C++),C,Fortran,等等。

CMake手册详解(十九)-install

CMake手册详解(十九)-install

CMake手册详解(十九)-installCMD#49 : install 指定在安装时要运行的规则。

该命令为一个工程生成安装规则。

在某一源文件路径中,调用这条命令所指定的规则会在安装时按顺序执行。

在不同路径之间的顺序未定义。

该命令有诸多版本。

其中的一些版本定义了文件以及目标的安装属性。

这多个版本的公共属性都有所涉及,但是只有在指定它们的版本中,这些属性才是合法的(下面的DESTIONATION到OPTIONAL 的选项列表是公共属性。

——译注)。

DESTINATION选项指定了一个文件会安装到磁盘的哪个路径下。

若果给出的是全路径(以反斜杠或者驱动器名开头),它会被直接使用。

如果给出的是相对路径,它会被解释为相对于CMAKE_INSTALL_PREFIX的值的相对路径。

PERMISSIONS选项制定了安装文件需要的权限。

合法的权限有:OWNER_READ,OWNER_WRITE,OWNER_EXECUTE,GROUP_READ,GROUP_WRITE,GROUP_EXECUTE,WORLD_READ,WORLD_WRITE,WORLD_EXECUTE,SETUID和SETGID。

对于在某些特定的平台上没有意义的权限,在这些平台上会忽略这些选项。

CONFIGURATIONS选项指定了该安装规则将会加诸之上的一系列的构建配置(Debug,Release,等等)。

COMPONENT选项指定了该安装规则相关的一个安装部件的名字,比如“runtime”或“development”。

对于那些指定安装部件的安装过程来说,在安装时只有与给定的部件名相关的安装规则会被执行。

对于完整安装,所有部件都会被安装。

RENAME选项为一个可能不同于原始文件的已经安装的文件指定另一个名字。

重命名只有在该命令正在安装一个单一文件时才被允许(猜测是为了防止文件名冲突时覆盖掉旧文件。

——译注)。

OPTIONAL选项表示要安装的文件不存在不会导致错误。

cmake tools使用说明

cmake tools使用说明

cmake tools使用说明
CMake是一个开源的、跨平台的工具集,用于构建、测试和打包软件。


通过简单的、平台和编译器独立的配置文件来控制软件编译过程,并生成适用于选定编译器环境的本地makefile和工作空间。

在调试和启动方面,CMake工具简化了配置过程。

对于C和C++项目,可能存在多个可执行文件,创建可能会变得复杂且容易出错。

如果通过CMake定义了可执行目标,CMake工具将解析它们,并允许进行调试。

需要注意的是,调试只支持CMake服务模式,该模式在以上版本的CMake中会自动打开。

在启动或调试可执行文件时,默认会触发构建过程。

如果需要关闭该设置,可以查看CMake的buildBeforeRun选项。

此外,对于复杂的调试需求,例如设置工作目录、提供命令行参数或使用其他调试器,可以使用文件。

CMake Tools可以在中提供帮助,以通过命令
替换的方式指定可执行文件的路径。

在快速调试方面,CMake提供了一种简便的方法,无需创建文件。

目前只
有Microsoft的vscode-cpptools插件支持快速调试。

可以通过命令面板
中的CMake: Debug目标命令或相关热键(默认为ctrl+F5)来启动快速调试。

但请注意,快速调试不允许指定程序参数或其他调试选项。

以上内容仅供参考,如需更多信息,建议访问信息技术论坛或请教专业技术人员。

CMake手册详解(十七)

CMake手册详解(十七)

CMake手册详解(十七)CMD#40 : get_property 获取一个属性值get_property(<variable><GLOBAL |DIRECTORY [dir] |TARGET <target> |SOURCE <source> |TEST <test> |CACHE <entry> |VARIABLE>PROPERTY <name>[SET | DEFINED | BRIEF_DOCS | FULL_DOCS])获取在某个域中一个对象的某种属性值。

第一个参数指定了存储属性值的变量。

第二个参数确定了获取该属性的域。

域的选项仅限于:•GLOBAL 域是唯一的,它不接受域名字。

•DIRECTORY域默认为当前目录,但是其他的路径(已经被CMake处理过)可以以相对路径或完整路径的方式跟在该域后面。

•TARGET域后面必须跟有一个已有的目标名。

•SOURCE域后面必须跟有一个源文件名。

•TEST域后面必须跟有一个已有的测试。

•CACHE域后面必须跟有一个cache条目。

•VARIABLE域是唯一的,它不接受域名字。

PROPERTY选项是必须的,它后面紧跟要获取的属性名。

如果该属性没有被设置,该命令将返回空值。

如果给定了SET选项,那么返回值会被设置为一个布尔值,用来指示该属性是否被设置过。

如果给定了DEFINED选项,那么返回值会被设置为一个布尔值,用来指示该属性是否被类似于define_property的命令定义过。

如果指定了BRIEF_DOCS或者FULL_DOCS选项,那么该变量将会被设置为被查询属性的文档的字符串。

如果被请求的属性的文档没有被定义,将返回NOTFOUND。

CMD#41 : get_source_file_property 为一个源文件获取一种属性值。

get_source_file_property(VAR file property)从一个源文件中获取某种属性值。

cmake 手册

cmake 手册

cmake 手册
CMake 是一个用于构建和管理计算机图形学应用程序的工具。

它允许开发人员使用单个构建系统来处理多个平台和操作系统的构建
和部署。

CMake 手册是 CMake 的官方文档,它提供了有关 CMake 的详细信息,包括如何使用 CMake、如何编写 CMake 文件、如何配置CMake 以支持特定项目等。

CMake 手册分为多个部分,每个部分都涵盖了不同的主题。

以下是 CMake 手册中的一些重要部分:
1. 安装和配置:介绍了如何安装和配置 CMake。

2. 使用 CMake 构建项目:介绍了如何使用 CMake 构建项目,包括如何编写 CMake 文件、如何设置项目的依赖关系等。

3. 配置 CMake 以支持特定项目:介绍了如何配置 CMake 以支持特定项目,包括如何设置项目的标志、编译器和运行时库等。

4. CMake 生成器:介绍了如何使用 CMake 生成器来生成 CMake 文件。

5. 插件和扩展:介绍了如何使用 CMake 插件和扩展来扩展CMake 的功能。

6. 其他 CMake 主题:介绍了其他 CMake 主题,如 CMake 列表文件、CMake 变量和 CMake 模板等。

CMake 手册是 CMake 官方文档的重要组成部分,它对 CMake 的使用方法和配置进行了深入的探讨,是 CMake 开发人员必备的参考资料。

Cmake手册详解

Cmake手册详解

目录一、CMake2.8.3 选项 (4)用法 (4)描述 (5)选项 (5)生成器 (10)二、CMake命令 (12)CMD#1 : add_custom_command (12)CMD#2: add_custom_target (14)CMD#3:add_definitions (15)CMD#4:add_dependencies (15)CMD#5:add_executable: (16)CMD#6:add_library (16)CMD#7:add_subdirectory (17)CMD#8:add_test (18)CMD#9:aux_source_directory (19)CMD#10:break (19)CMD#11:build_command (19)CMD#12:cmake_minimum_required (20)CMD#13:cmake_policy (20)CMD#14:configure_file: (21)CMD#15:create_test_sourcelist: (22)CMD#16:define_property: (22)CMD#17: else (23)CMD#18: elseif (23)CMD#19: enable_language (23)CMD#20: enable_testing (23)CMD#21: endforeach (24)CMD#22: endfunction (24)CMD#24: endmacro (24)CMD#25: endwhile (24)CMD#26: execute_process (25)CMD#27:export (25)CMD#28: file (26)CMD#29:find_file (28)CMD#30:find_library (30)CMD#31:find_package (33)CMD#32 : find_path (38)CMD#33:find_program (40)CMD#34:fltk_wrap_ui (42)CMD#35 : foreach (42)CMD#36 : function (43)CMD#37 : get_cmake_property (43)CMD#38 : get_directory_property (44)CMD#39 : get_filename_component (44)CMD#40 : get_property (44)CMD#41 : get_source_file_property (45)CMD#42 : get_target_property (45)CMD#43 : get_test_property (46)CMD#44 : if (46)CMD#45 : include (49)CMD#46 : include_directories (50)CMD#47 : include_external_msproject (50)CMD#48 : include_regular_expression (50)CMD#49 : install (50)CMD#50 : link_directories 指定连接器查找库的路径。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录一、CMake2.8.3 选项 (4)用法 (4)描述 (5)选项 (5)生成器 (10)二、CMake命令 (12)CMD#1 : add_custom_command (12)CMD#2: add_custom_target (14)CMD#3:add_definitions (15)CMD#4:add_dependencies (15)CMD#5:add_executable: (15)CMD#6:add_library (16)CMD#7:add_subdirectory (17)CMD#8:add_test (18)CMD#9:aux_source_directory (18)CMD#10:break (19)CMD#11:build_command (19)CMD#12:cmake_minimum_required (20)CMD#13:cmake_policy (20)CMD#14:configure_file: (21)CMD#15:create_test_sourcelist: (22)CMD#16:define_property: (22)CMD#17: else (23)CMD#18: elseif (23)CMD#19: enable_language (23)CMD#20: enable_testing (23)CMD#21: endforeach (24)CMD#22: endfunction (24)CMD#24: endmacro (24)CMD#25: endwhile (24)CMD#26: execute_process (24)CMD#27:export (25)CMD#28: file (26)CMD#29:find_file (28)CMD#30:find_library (30)CMD#31:find_package (33)CMD#32 : find_path (37)CMD#33:find_program (40)CMD#34:fltk_wrap_ui (42)CMD#35 : foreach (42)CMD#36 : function (43)CMD#37 : get_cmake_property (43)CMD#38 : get_directory_property (44)CMD#39 : get_filename_component (44)CMD#40 : get_property (44)CMD#41 : get_source_file_property (45)CMD#42 : get_target_property (45)CMD#43 : get_test_property (46)CMD#44 : if (46)CMD#45 : include (49)CMD#46 : include_directories (49)CMD#47 : include_external_msproject (50)CMD#48 : include_regular_expression (50)CMD#49 : install (50)CMD#50 : link_directories 指定连接器查找库的路径。

(55)CMD#51: list (55)CMD#52:load_cache (56)CMD#54:macro (56)CMD#55:mark_as_advanced (57)CMD#56:math (57)CMD#57:message (57)CMD#58: option (58)CMD#59: output_required_files (58)CMD#60: project (58)CMD#61: qt_wrap_cpp (59)CMD#62: qt_wrap_ui (59)CMD#63: remove_definitions (59)CMD#64: return (59)CMD#65: separate_arguments (60)CMD#66: set (60)CMD#67: set_directory_properties (61)CMD#68: set_property (61)CMD#69: set_source_files_properties (62)CMD#70: set_target_properties (62)CMD#71: set_tests_properties (63)CMD#72: site_name (64)CMD#73: source_group (64)CMD#74: string (64)CMD#75: target_link_libraries (66)CMD#76: try_compile (67)CMD#77: try_run (68)CMD#78 unset (69)CMD#79 : variable_watch (69)CMD#80: while (69)公司的一个项目使用CMake作为跨平台构建工具;业务有需求,当然要好好研读一下官方的技术手册。

目前的计划是先把官方手册翻译一下,了解清楚CMake中的各种命令、属性和变量的用法。

同时在工作中也会阅读CMake的真实源码,后续会基于此陆续写一些工程中使用CMake的心得。

CMake的版本也在不停更新,有些新的命令和变量会随着版本更新添加进来,这是后事了,暂且不管;现在锁定CMake 2.8.3作为手册翻译的版本。

作为园子里的新丁,文章在术语和表达等等方面会有欠缺的地方,还请大侠们慷慨指点。

另外,罗马不是一天建成的,长长的手册翻译完也不知道要经历多少日升月落;不过还是希望自己能够坚持下去:-)。

一、CMake2.8.3 选项•命令名称•用法•描述•命令选项•生成器•命令•属性•全局域属性•目录属性•目标属性•测试属性•源代码属性•Cache Entries属性•兼容性命令•CMake 标准模块•CMake策略•变量•改变行为的变量•描述系统的变量•语言变量•控制构建的变量•提供信息的变量•版权•其他参考资料命令名称cmake - 跨平台Makefile生成工具。

用法cmake [选项] <源码路径>cmake [选项] <现有构建路径>描述cmake可执行程序是CMake的命令行界面。

它可以用脚本对工程进行配置。

工程配置设置可以在命令行中使用-D选项指定。

使用-i选项,cmake将通过提示交互式地完成该设置。

CMake是一个跨平台的构建系统生成工具。

它使用平台无关的CMake清单文件CMakeLists.txt,指定工程的构建过程;源码树的每个路径下都有这个文件。

CMake产生一个适用于具体平台的构建系统,用户使用这个系统构建自己的工程。

选项-C <initial-cache>: 预加载一个脚本填充缓存文件。

当cmake在一个空的构建树上第一次运行时,它会创建一个CMakeCache.txt文件,然后向其中写入可定制的项目设置数据。

-C选项可以用来指定一个文件,在第一次解析这个工程的cmake清单文件时,从这个文件加载缓存的条目(cache entries)信息。

被加载的缓存条目比项目默认的值有更高的优先权。

参数中给定的那个文件应该是一个CMake脚本,其中包含有使用CACHE选项的SET命令;而不是一个缓存格式的文件。

-D <var>:<type>=<value>: 创建一个CMake的缓存条目。

当cmake第一次运行于一个空的构建数时,它会创建一个CMakeCache.txt文件,并且使用可定制的工程设置来填充这个文件。

这个选项可以用来指定优先级高于工程的默认值的工程设置值。

这个参数可以被重复多次,用来填充所需要数量的缓存条目(cache entries)。

-U <globbing_expr>: 从CMake的缓存文件中删除一条匹配的条目。

该选项可以用来删除CMakeCache.txt文件中的一或多个变量。

文件名匹配表达式(globbing expression)支持通配符*和?的使用。

该选项可以重复多次以删除期望数量的缓存条目。

使用它时要小心,你可能因此让自己的CMakeCache.txt罢工。

-G <generator-name>: 指定一个makefile生成工具。

在具体的平台上,CMake可以支持多个原生的构建系统。

makefile生成工具的职责是生成特定的构建系统。

可能的生成工具的名称将在生成工具一节给出。

-Wno-dev: 抑制开发者警告。

抑制那些为CMakeLists.txt文件的作者准备的警告信息。

-Wdev: 使能开发者警告信息输出功能。

允许那些为CMakeLists.txt文件的作者准备的警告信息。

-E: CMake命令行模式。

为了真正做到与平台无关,CMake提供了一系列可以用于所有系统上的的命令。

以-E参数运行CMake会帮助你获得这些命令的用法。

可以使用的命令有:chdir, copy,copy_if_different copy_directory, compare_files, echo, echo_append, environment,make_directory, md5sum, remove_directory, remove, tar, time, touch,touch_nocreate, write_regv, delete_regv, comspec, create_symlink。

-i: 以向导模式运行CMake。

向导模式是在没有GUI时,交互式地运行cmake的模式。

cmake会弹出一系列的提示,要求用户回答关于工程配置的一行问题。

这些答复会被用来设置cmake的缓存值。

-L[A][H]: 列出缓存的变量中的非高级的变量。

-L选项会列出缓存变量会运行CMake,并列出所有CMake的内有被标记为INTERNAL 或者ADVANCED的缓存变量。

这会显示当前的CMake配置信息,然后你可以用-D选项改变这些选项。

修改一些变量可能会引起更多的变量被创建出来。

如果指定了A选项,那么命令也会显示高级变量。

如果指定了H选项,那么命令会显示每个变量的帮助信息。

--build <dir>: 构建由CMake生成的工程的二进制树。

(这个选项的含义我不是很清楚—译注)该选项用以下的选项概括了内置构建工具的命令行界面<dir> = 待创建的工程二进制路径。

--target <tgt> = 构建<tgt>,而不是默认目标。

相关文档
最新文档