光行资源网提供CMake中文版是一款功能齐全的编译程序软件。CMake免费完整版主要是对于于从业程序编写领域有关工作人员所打造出的,客户能够根据该软件产生一定的便捷,让你一个更为舒服清静的程序编写自然环境,进一步提高了你的程序编写高效率。
CMake精简版拥有很强的兼容模式,能够另外輸出多种多样的makefile与project文件,并且实际操作十分简易,主要是用于搭建、检测装包、检测C 特点这些,轻轻松松操纵软件开展单独配备,十分便捷。
CMake特色
1.开放源代码,使用类 BSD 许可发布。
2.跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在 苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。
3.能够管理大型项目,KDE4 就是最好的证明。
4.简化编译构建过程和编译过程。Cmake 的工具链非常简单:cmake+make。
5.高效率,按照 KDE 官方说法,CMake 构建 KDE4 的 kdelibs 要比使用 autotools 来 构建 KDE3.5.6 的 kdelibs 快 40%,主要是因为 Cmake 在工具链中没有 li^ool。
6.可扩展,可以为 cmake 编写特定功能的模块,扩充 cmake 功能。
组态档
组态档是用一种建构CMake专用的特殊编程语言写的CMake脚本。
内建C语言、C++、Fortran、Java的自动相依性分析功能。
经由CMake脚本语言支持SWIG、Qt、FLTK。
内建对微软Visual Studio .NET和过去的Visual Studio版本的支持,可以产生后缀为.dsp、.sln和.vcproj的文档。
用传统的时间标签侦测档案内容的改变。
支持平行建构(在多台电脑上同时建构)
在许多操作系统上进行跨平台编译,包括Linux、POSIX相容的系统(AIX、*BSD、HP-UX、IRIX、MinGW/MSYS、Solaris系统)、Mac OS X和微软Windows 95/98/NT/2000/XP等。
产生可以给Graphviz用的全局相依图。
已经和Dart、CTest和CPack等CMake测试和释出的工具整合。
使用方法
CMake的所有的语句都写在一个叫:CMakeLists.txt 的文件中。当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的变量值进行配置。这个命令必须指向CMakeLists.txt所在的目录。配置完成之后,应用cmake命令生成相应的makefile(在Unix like系统下)或者 project文件(指定用window下的相应编程工具编译时)。
其基本操作流程为:
$> ccmake directory
$> cmake directory
$> make
其中directory为CMakeList.txt所在目录;
第一条语句用于配置编译选项,如VTK_DIR目录 ,一般这一步不需要配置,直接执行第二条语句即可,但当出现错误时,这里就需要认为配置了,这一步才真正派上用场;
第二条命令用于根据CMakeLists.txt生成Makefile文件;
第三条命令用于执行Makefile文件,编译程序,生成可执行文件;
CMake的执行就是这么简单,其难点在于如何编写CMakeLists.txt文件,下面结合例子简单介绍CMakeLists.txt的编写,看下面这个CMakeLists.txt
#project name
PROJECT(test_math)
#head file path
INCLUDE_DIRECTORIES(
include
)
#source directory
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
#set environment variable
SET(TEST_MATH
${DIR_SRCS}
)
#set extern libraries
SET(LIBRARIES
libm.so
)
#add executable file
ADD_EXECUTABLE(../bin/bin ${TEST_MATH})
#add link library
TARGET_LINK_LIBRARIES(../bin/bin ${LIBRARIES})
或者用下面这个CMakeLists.txt
#project name
PROJECT(test_math)
#head file path
INCLUDE_DIRECTORIES(
include
)
#source directory
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
#set environment variable
SET(TEST_MATH
${DIR_SRCS}
)
#add executable file
ADD_EXECUTABLE(../bin/bin ${TEST_MATH})
#add link library
TARGET_LINK_LIBRARIES(../bin/bin m)
这是一个测试数学函数的程序的CMakeLists.txt,"#"后面为注释的内容,CMake的命令全部为大写
第2行指定生成的工程名为test_math
第4行指定头文件目录为include
第8行指定源文件目录为src,并将其赋值给环境变量DIR_SRCS
第10行设定环境变量TEST_MATH的值为环境变量DIR_SRCS的值,此处用于显示如何用环境变量对环境变量进行赋值
第14行将数学函数库赋值给环境变量LIBRARIES,当然,可以不用这个环境变量,而在后面直接使用该库名
第18行用于指定生成文件,将环境变量TEST_MATH目录下的所有文件编译生成../bin目录下的可执行文件bin
第20行指定../bin/bin执行时的链接库为环境变量LIBRARIES的值-libm.so
下面给出源文件
/src/main.c:
#include<stdio.h>
#include"../include/a.h"
int main()
{
double b=25.0;
double a=0.0;
a=get_sqrt(b);
printf("a is %lf, b is %lf\n",a,b);
return 0;
}
/src/a.c
#include"../include/a.h"
double get_sqrt(double var1)
{
return sqrt(var1);
}
/include/a.h
#ifndef A_FILE_HEADER_INC
#define A_FILE_HEADER_INC
#include<math.h>
double get_sqrt(double var1);
#endif
将CMakeLists.txt放在当前目录下,执行CMakeLists.txt
$> cmake .
$> make
即可生成可执行文件,在目录/bin下的bin文件,好了运行看其效果是否和所想一样。
使用教程
配置
从本站下载cmake后,我们可以在下载路径得到一个压缩包,如图所示,解压此压缩包,解压缩有我们可以得到下图所示的文件。下面我们开始配置cmake。
进入电脑属性
在此电脑上右键单击,打开右键菜单,点击属性菜单,如图所示。
进入高级系统设置
在属性页面,我们在左边可以看到高级系统设置选项,如图所示,点击高级系统设置,进入高级系统设置页面。
进入环境变量设置
在高级系统设置页面,可以找到环境变量选项,如图所示,点击环境变量,进入环境变量页面。
进入path变量
在环境变量页面,我们可以看到;系统变量”框,在系统变量部分,我们可以找到path变量,如图所示,双击path变量。打开path变量设置窗口。
设置path变量
打开path变量设置窗口后,将刚才解压的文件所在路径复制,然后点击;新建”,在新的栏目中粘贴路径,点击;确定”即可。
验证配置是否成功
在命令行输入"cmake --version",如果输出如图所示,即配置成功。
编译
运行GUI的cmake界面:
执行Configure:
运行之后,生成了如下文件:
生成Makefile:
执行Generate之后生成如下文件:
运行make进行编译:
编译完成后,在build目录生成Tutorial.exe,运行Tutorial.exe 25就可以看到运行结果:
运行make install安装程序:
运行make test进行测试:
常见问题
CMake缓存是什么?
用户在第一次运行CMakeCMake时,它会生成一个CMakeCache.txt文件。此文件包含诸如本机JPEG库的存在和位置之类的内容。
添加条目以响应某些CMake命令(例如FIND_LIBRARY),因为它们在源树中的所有地方在CMakeLists文件中的所有地方处理。
在CMake运行后,并创建了一个CMakeCache.txt文件 - 你可以编辑它。CMake GUI,将允许您轻松地编辑选项,或者您可以直接编辑文件。
编辑缓存的主要原因是给予CMake本地库(如JPEG)的位置,或者阻止它使用本地库并在源代码树中使用库的版本。
CMake不能改变缓存文件本身中的现有条目。如果您的CMakeLists.txt文件变化显着,您将需要从缓存文件中删除相关条目。如果你还没有手动编辑缓存文件,你可以删除它,而后重新运行CMake。
cmake如何处理路径包含头文件?
CMake中,添加头文件路径,对应的函数叫includ。然后在参数中,把所有需要添加的路径,加进去就可以了。
添加库路径,对应的函数叫LINK_DIR,同样,在参数中,把所有的路径加进去就可以了。
CMake中的函数调用,是不区分大小写的,大小写可以混合使用。
添加库,对应的函数叫LINK_LIBR,把所有的库加进去即可。这
里有一个注意事项,这个不需要我们手动添加.lib这个后缀了,挺方便的。
然后执行CMake,生成内容。然后这里需要切换到Rele版本,进行编译。生成成功并运行。
查看之所以Debug版本编译有问题,发现依赖库为osg.lib而不是osgd.lib,也就是说依赖库是Rele版的。
为何要使用项目构建工具?
为何要使用cmake和autotools之类的项目构建工具? 我想,这恐怕是刚刚接触CMake项目的人最应该问的问题之一了。
;Hello, world!;这个最经典的程序相信我们每个人都写过。无论在什么平台下,编译和运行这个程序都仅需要非常简单的操作。但事实上,hello,world最多只能算是一个实例程序,根本算不上一个真正的CMake项目。
任何一个CMake项目,除了写代码之外,还有一个更为重要的任务,就是如何组织和管理这些代码,使项目代码层次结构清晰易读,这对以后的维护工作大有裨益。使想一下,如果把一个像KDE4那么大的项目像hello world那样,把全部代码都放到一个main.cpp文件中,那将会是多么恐怖的一件事情。别说KDE4,就是我们随便一个几千行代码的小项目,也不会有人干这种蠢事。
决定代码的组织方式及其编译方式,也是程序设计的一部分。因此,我们需要cmake和autotools这样的工具来帮助我们构建并维护项目代码。
看到这里,也许你会想到makefile,makefile不就是管理代码自动化编译的工具吗?为什么还要用别的构建工具?
其实,cmake和autotools正是makefile的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量。如果你自己动手写过makefile,你会发现,makefile通常依赖于你当前的编译平台,而且编写makefile的工作量比较大,解决依赖关系时也容易出错。因此,对于大多数项目,应当考虑使用更自动化一些的cmake或者autotools来生成makefile,而不是上来就动手编写。
CMake介绍
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的CMake,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的CMake,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
CMake中文版是一款功能强大的编译软件。CMake免费版主要是针对于从事编程行业相关人员所打造的!用户可以通过该软件带来一定的便利,给你一个更加舒适安静的编程环境,大大提高了你的编程效率。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的CMake,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的CMake,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。,.跨平台,并可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在 苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。