`
tcspecial
  • 浏览: 911230 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

cmake 使用

阅读更多

当工程规模比较大复杂时,手写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使用例子.zip”压缩包显然包含了关于CMake的使用教程和实例,非常适合初学者或者需要深入理解CMake的开发者下载学习。 在CMake中,主要涉及以下几个核心概念: 1. **CMakeLists.txt**:这是CMake项目的...

    CMake使用示例

    在“CMake使用示例”中,我们可能会学习如何创建CMakeLists.txt文件,这是CMake项目的核心。这个文件包含了项目的配置信息,如源代码目录、库依赖、可执行文件和库的目标等。以下是一些关键的CMake命令和概念: 1. ...

    cmake使用文档.pdf

    ### CMake 使用文档知识点概述 #### 一、CMake简介 CMake是一个强大的跨平台构建系统,能够简化软件项目的构建过程。它通过一系列简洁的语句来描述不同平台下的安装和编译流程,并能输出各种格式的makefile或...

    CMake使用教程.pdf

    ### CMake使用教程知识点概述 #### 一、CMake简介与背景 - **起源与发展**:CMake由Kitware公司及开源社区共同开发,最初作为VTK(Visualization Toolkit)等工具套件的一部分出现,后来发展成一个独立的开源项目...

    cmake-cmake使用示例之Installing.zip

    本示例“cmake_cmake使用示例之Installing”将介绍如何使用CMake进行安装步骤,这在开源软件项目中非常常见。 首先,我们需要理解CMake的基本流程,通常包括三个阶段:配置(configure)、生成(generate)和构建...

    Cmake使用手册,CMakeLists.txt的语法规则!

    这份“Cmake使用手册”将带你深入理解CMake的基本概念、语法以及如何利用CMakeLists.txt来管理你的项目。 首先,CMake不是直接编译器,而是一个生成器,它会生成针对特定编译器的构建文件,如Unix Makefiles、...

    CMake使用教程 Linux

    本教程将围绕Linux环境下的CMake使用进行详细讲解。 首先,`mastering-cmake.pdf`可能会涵盖CMake的基础知识,包括安装CMake、配置CMakeLists.txt文件、设置变量、添加源文件、指定目标和库、处理依赖关系等内容。...

    cmake-cmake使用示例之三方库.zip

    在"cmake-cmake使用示例之三方库.zip"这个压缩包中,我们可以推测它包含了一些关于如何使用CMake来管理并构建第三方库的示例。这对于我们理解如何在C++项目中集成和管理外部库非常有帮助。C++开发中,经常需要引入第...

    cmake-cmake使用示例之生成动态库.zip

    CMake使用一种简单的脚本语言(称为CMakeLists.txt)来定义项目结构、编译选项、依赖关系和其他构建设置。 ### 创建CMakeLists.txt 在项目的根目录下,你需要创建一个名为`CMakeLists.txt`的文件,这是CMake配置的...

    cmake-cmake使用示例之Hello示例.zip

    在“cmake-cmake使用示例之Hello示例.zip”中,我们可以看到一个简单的CMake应用,用于演示如何用CMake构建C++项目。 首先,让我们了解一下CMake的基本概念。CMake不直接生成可执行文件或库,而是生成平台特定的...

    cmake-cmake使用示例之编译标准CPP.zip

    在“cmake-cmake使用示例之编译标准CPP.zip”这个压缩包中,我们可以预见到它包含了一个关于如何使用CMake来编译遵循C++标准的项目的示例。 CMake的基本思想是通过生成特定平台的构建文件(如Unix下的Makefile或...

    cmake使用示例与整理总结.步步为赢.博客频道.CSDN1

    当使用`ADD_SUBDIRECTORY(src bin)`时,`CMAKE_CURRENT_BINARY_DIR`会更新为指定的`bin`目录。 `EXECUTABLE_OUTPUT_PATH`和`LIBRARY_OUTPUT_PATH`用于设定最终生成的可执行文件和库文件的存放路径。需要注意的是,`...

    cmake使用进阶版【多启动工程,多静态库链接】

    cmake使用进阶版【多启动工程,多静态库链接】,此cmake工程存在两个启动程序,也就是支持两个main函数存在,可以生成两个exe,并且能在windows和linux下运行,可跨平台使用,此博客是基于另一个博客进行改进的,...

    CMake实践——关于Cmake使用方法的书籍

    CMake使用方法的书籍,完整阐述了Cmake的特点和使用方法

    cmake使用实例

    在“cmake使用实例”中,我们可以学习如何利用CMake来构建项目。首先,我们需要创建一个名为`CMakeLists.txt`的文件,这是CMake的配置文件。这个文件包含了项目的构建规则,比如设置项目名称、指定源代码文件、添加...

    cmake-cmake使用示例之使用Ninja编译.zip

    cmake cmake_cmake使用示例之使用Ninja编译

    CMake使用手册

    ### CMake使用手册 #### 一、约定与简介 本文档旨在系统地介绍CMake的使用方法,并通过实例展示如何利用CMake简化跨平台构建流程。CMake是一种跨平台的自动构建系统,它使用简单的文本文件(即`CMakeLists.txt`...

    CMake使用文档

    CMake 特点 1. 在每个源码目录下都有一个 CMakeLists.txt. 2. CMake 语句不区分大小写。一句一行,无行结束符号,注释用# 3. CMake 实际也是一种编程语言。CMake 根据 CMakeLists.txt 自动生成 Makefile. 4. CMake ...

    CMake使用foldtarget对构建项目进行分类

    CMake使用foldtarget对构建项目进行分类

    CMake使用source-group配置源码过滤器

    CMake使用source-group配置源码过滤器

Global site tag (gtag.js) - Google Analytics