当工程规模比较大复杂时,手写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的使用,可以放心下载学习。cmake使用教程例子详细说明。可以放心下载学习
简单实例教你在cmake脚本中使用boost库
cmake使用进阶版【多启动工程,多静态库链接】,此cmake工程存在两个启动程序,也就是支持两个main函数存在,可以生成两个exe,并且能在windows和linux下运行,可跨平台使用,此博客是基于另一个博客进行改进的,...
CMake使用教程
声明CMake的版本要求向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制的存放位置EXCLUDE_FROM_ALL含义:将这个目录从编译过程中
CMake 特点 1. 在每个源码目录下都有一个 CMakeLists.txt. 2. CMake 语句不区分大小写。一句一行,无行结束符号,注释用# 3. CMake 实际也是一种编程语言。CMake 根据 CMakeLists.txt 自动生成 Makefile. 4. CMake ...
cmake中文使用文档,写的很好分享一下
cmake的模板,可以直接在windows或者 linux上直接cmake使用。对初学者很有用。
请参考教程:http://blog.csdn.net/dbzhang800/article/details/6314073,cmake使用实例
此处描述了如何利用CMake使用fftw,可以实现linux环境和windows环境使用fftw,另外提及了实现windows下win32到x64编译环境的转换
CMake使用总结.MWB日常笔记.目录搜索1
cmake 教程
配套文章: http://blog.csdn.net/alex_my/article/details/18982363 此资源为文章中使用到的所有代码,也可以不用下载,文章中都有贴出。
详细描述linux平台cmake的使用过程!以及
主要介绍CMake使用方法,对立面每个方法做了简要说明。
使用vs2017和cmake编译的Eigen3.3.9的库,32位64位通用
hello cmake,subdirectory cmake,shared static lib cmake,call lib, multiple subdirectory compile cmake,windows lib cmake
小白刚入门cmake,通过这个文档可以对cmake有一定理解和认识,适用新手
浅显易懂的cmake入门教程, 非常适合初学者, 浅显易懂的cmake入门教程, 非常适合初学者, 浅显易懂的cmake入门教程, 非常适合初学者
博客【cmake实战十一】com组件方法的简单实现 中的demo 博客地址:... 1.组件必须动态连接; 2.组件必须隐藏(或封装)其内部实现细节。 3.基类智能指针转换为派生类的智能指针使用dynamic_pointer_cast