当工程规模比较大复杂时,手写Makefile十分不便,要是能自动生成Makefile,那该多好。cmake就这样诞生了,cmake是一个跨平台的自动化构建系统,它使用名为CMakeLists.txt来管理Makefile文件。不过从易用性方面而言,比qmake还是逊色多了。
一. 安装
下载源码,运行 ./bootstrap, make, make install 即可
二. 工程处理
2.1 动态库
#生成动态库libadd.so PROJECT(add) #工程名称 CMAKE_MINIMUM_REQUIRED(VERSION 2.8) #cmake最低版本限制 AUX_SOURCE_DIRECTORY(. DIR_SRCS1) #将当前目录赋给变量DIR_SRC1 ADD_LIBRARY(add SHARED ${DIR_SRCS1}) #编译${DIR_SRCS1}文件,生成动态库libadd.so SET(CMAKE_BUILD_TYPE Debug) #设置工程为Debug版本,或者直接运行 cmake -DCMAKE_BUILD_TYPE=Debug(或Release) SET_TARGET_PROPERTIES(add PROPERTIES VERSION 1.0 SOVERSION 1) #设置动态库版本号 MESSAGE(STATUS "finish compiler libadd") #打印信息 在当前目录直接运行 cmake,会生成 Makefile
2.2 app工程
PROJECT(depend) CMAKE_MINIMUM_REQUIRED(VERSION 2.8) ADD_SUBDIRECTORY(src) #添加子目录 AUX_SOURCE_DIRECTORY(. DIR_SRCS) ADD_EXECUTABLE(depend ${DIR_SRCS}) #生成可执行文件depend INCLUDE_DIRECTORIES( src #include文件目录 ) ADD_DEFINITIONS( -DHELLO #预编译宏定义开关 -DWORLD ) SET(CMAKE_BUILD_TYPE Debug) SET(CMAKE_VERBOSE_MAKEFILE on) #默认情况下,不会打印make执行过程,on启用即可 SET(EXECUTABLE_OUTPUT_PATH ./bin) TARGET_LINK_LIBRARIES(depend add) #添加依赖库libadd.so #for 语句 SET(VAR a b c) FOREACH(f ${VAR}) MESSAGE("print " ${f}) ENDFOREACH(f) #if 语句 SET(AAA abc) IF(AAA STREQUAL abc) MESSAGE(STATUS "TRUE") ENDIF() #os 判断 IF(UNIX) MESSAGE("OS: Linux") ENDIF() #自定义命令 SET(CUSTOM_TARGET depend-1) add_custom_command( PRE_BUILD COMMAND echo "execute a fake cmd" COMMENT "This cmd will be execute before building" OUTPUT ${CUSTOM_TARGET} COMMAND cp test.txt bin/${CUSTOM_TARGET} DEPENDS test.txt ) ADD_CUSTOM_TARGET(whatever DEPENDS ${CUSTOM_TARGET}) #make whatever,会拷贝test.txt文件到bin/
相关推荐
这个“cmake使用例子.zip”压缩包显然包含了关于CMake的使用教程和实例,非常适合初学者或者需要深入理解CMake的开发者下载学习。 在CMake中,主要涉及以下几个核心概念: 1. **CMakeLists.txt**:这是CMake项目的...
在“CMake使用示例”中,我们可能会学习如何创建CMakeLists.txt文件,这是CMake项目的核心。这个文件包含了项目的配置信息,如源代码目录、库依赖、可执行文件和库的目标等。以下是一些关键的CMake命令和概念: 1. ...
### CMake 使用文档知识点概述 #### 一、CMake简介 CMake是一个强大的跨平台构建系统,能够简化软件项目的构建过程。它通过一系列简洁的语句来描述不同平台下的安装和编译流程,并能输出各种格式的makefile或...
### CMake使用教程知识点概述 #### 一、CMake简介与背景 - **起源与发展**:CMake由Kitware公司及开源社区共同开发,最初作为VTK(Visualization Toolkit)等工具套件的一部分出现,后来发展成一个独立的开源项目...
本示例“cmake_cmake使用示例之Installing”将介绍如何使用CMake进行安装步骤,这在开源软件项目中非常常见。 首先,我们需要理解CMake的基本流程,通常包括三个阶段:配置(configure)、生成(generate)和构建...
这份“Cmake使用手册”将带你深入理解CMake的基本概念、语法以及如何利用CMakeLists.txt来管理你的项目。 首先,CMake不是直接编译器,而是一个生成器,它会生成针对特定编译器的构建文件,如Unix Makefiles、...
本教程将围绕Linux环境下的CMake使用进行详细讲解。 首先,`mastering-cmake.pdf`可能会涵盖CMake的基础知识,包括安装CMake、配置CMakeLists.txt文件、设置变量、添加源文件、指定目标和库、处理依赖关系等内容。...
在"cmake-cmake使用示例之三方库.zip"这个压缩包中,我们可以推测它包含了一些关于如何使用CMake来管理并构建第三方库的示例。这对于我们理解如何在C++项目中集成和管理外部库非常有帮助。C++开发中,经常需要引入第...
CMake使用一种简单的脚本语言(称为CMakeLists.txt)来定义项目结构、编译选项、依赖关系和其他构建设置。 ### 创建CMakeLists.txt 在项目的根目录下,你需要创建一个名为`CMakeLists.txt`的文件,这是CMake配置的...
在“cmake-cmake使用示例之Hello示例.zip”中,我们可以看到一个简单的CMake应用,用于演示如何用CMake构建C++项目。 首先,让我们了解一下CMake的基本概念。CMake不直接生成可执行文件或库,而是生成平台特定的...
在“cmake-cmake使用示例之编译标准CPP.zip”这个压缩包中,我们可以预见到它包含了一个关于如何使用CMake来编译遵循C++标准的项目的示例。 CMake的基本思想是通过生成特定平台的构建文件(如Unix下的Makefile或...
在"cmake-cmake使用示例之包含头Headers.zip"这个压缩包中,我们可以推测其内容可能是一个关于如何在 CMake 项目中处理头文件(Headers)的实例教程。 1. **CMakeLists.txt 文件** 在 CMake 项目中,`CMakeLists....
当使用`ADD_SUBDIRECTORY(src bin)`时,`CMAKE_CURRENT_BINARY_DIR`会更新为指定的`bin`目录。 `EXECUTABLE_OUTPUT_PATH`和`LIBRARY_OUTPUT_PATH`用于设定最终生成的可执行文件和库文件的存放路径。需要注意的是,`...
cmake使用进阶版【多启动工程,多静态库链接】,此cmake工程存在两个启动程序,也就是支持两个main函数存在,可以生成两个exe,并且能在windows和linux下运行,可跨平台使用,此博客是基于另一个博客进行改进的,...
CMake使用方法的书籍,完整阐述了Cmake的特点和使用方法
在“cmake使用实例”中,我们可以学习如何利用CMake来构建项目。首先,我们需要创建一个名为`CMakeLists.txt`的文件,这是CMake的配置文件。这个文件包含了项目的构建规则,比如设置项目名称、指定源代码文件、添加...
cmake cmake_cmake使用示例之使用Ninja编译
CMake 特点 1. 在每个源码目录下都有一个 CMakeLists.txt. 2. CMake 语句不区分大小写。一句一行,无行结束符号,注释用# 3. CMake 实际也是一种编程语言。CMake 根据 CMakeLists.txt 自动生成 Makefile. 4. CMake ...
CMake使用foldtarget对构建项目进行分类
CMake使用source-group配置源码过滤器