Linux与Windows下CMake的安装与编译
一、背景介绍
“CMake”这个名字是"Cross platform Make"的缩写。虽然名字中含有"make",但是CMake和Unix上常见的“make”系统是分开的,而且更为高端。 它可与原生建置环境结合使用,例如:make、苹果的Xcode与微软的Visual Studio。
CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不相依赖某特定编译器。可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式,这和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。
CMake并不直接建构出最终的软件,而是产生标准的建构档(如Linux的Makefile或Windows Visual C++的projects/workspaces),最后再依一般的建构方式使用。
这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake和SCons等其他类似系统的区别之处。
二、Linux下安装
在linux环境下打开网页浏览器,输入网址:,找到最新版本的位置。
使用源码安装
tar -xvf cmake-3.14.5.tar cd cmake-3.14.5 ./bootstrap make make install
编译时提示 Could NOT find OpenSSL 的解决方法:
apt-get install libssl-dev
cmake 会默认安装在 /usr/local/bin 下面
查询cmake --version
cmake version 3.14.5
三、Linux编译代码
1、编写CMakeLists.txt文件
#1.cmake verson,指定cmake版本 cmake_minimum_required(VERSION 3.2) #2.project name,指定项目的名称,一般和项目的文件夹名称对应 PROJECT(test_sqrt) #3.head file path,头文件目录 INCLUDE_DIRECTORIES(include) #4.source directory,源文件目录 AUX_SOURCE_DIRECTORY(src DIR_SRCS) #5.set environment variable,设置环境变量,编译用到的源文件全部都要放到这里,否则编译能够通过,但是执行的时候会出现各种问题,比如"symbol lookup error xxxxx , undefined symbol" SET(TEST_MATH ${DIR_SRCS}) #6.add executable file,添加要编译的可执行文件 ADD_EXECUTABLE(${PROJECT_NAME} ${TEST_MATH}) #7.add link library,添加可执行文件所需要的库,比如我们用到了libm.so(命名规则:lib+name+.so),就添加该库的名称 TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)
2、在终端,分别输入命令
mkdir build cd build cmake .. make
四、Windows下安装
去官网,下载客户端
安装后, 确认是否安装成功
五、cmake转换为 VS2017工程
我们从github上,下载一个工程
它的结构如下
我们如何编译呢?
使用cmake-gui打开工程并生成vs工程文件
如图,
- 在"Where is the source code"文本框中,输入或者“browse”到源代码的根目录(包含CMakeLists.txt的文件夹)
- 在"Where to build the binaries" 文本框中,输入或者“browse”任何你喜欢的文件夹中——它会被用于输出构建结果(lib文件,头文件,dll文件以及执行程序。如果没有这个文件夹系统会帮你创建。注意,你可以按照需要声称到不同的文件夹中(但我们先不讨论这些细节)。
- 单击屏幕下方的Configure按键。
- 选择你的目标编译平台,例如"Visual Studio 2017"
- 当系统提示是否创建构建目录的时候选择Ok
- 等待configure执行结束
- 屏幕上现在会有一些配置设置,并用红色标记(这是用来指出你是第一次看到他们)。你可以在这里手动配置这些选项,不过现在我们只需要再次选择Configure。
- 等运行结束了选择"Generate"按键。
- 构建文件将会在你之前选择的文件夹下面产生,这时候就可以退出cmake来进行真正的编译工作。
以上就是使用CMake的过程!在你之前选择的文件夹中,你会发现有一系列工程文件,现在只需要找到并打开主项目工程文件(例如ZLToolKit.sln)。
参考: