怎样编写Cmake的配置文件Cmakelist.txt

怎样编写Cmake的配置文件Cmakelist.txt,第1张

CMake是一个编译配置工具, 它是一个跨平台c/c++ 编译配置工具。可以通过编写CMakeListstxt配置文件,可以控制生成的Makefile或者windows下工程文件。还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeListstxt中简单配置,就可以完成很多复杂的功能,包括写测试用例。
如果有嵌套目录,子目录下可以有自己的CMakeListstxt。
所以写好CMakeListstxt 是使用好Cmake的关键
工具/原料
Cmake
方法/步骤
1
Cmake 有linux ,windows 多个平台版本,如图是windows下版本程序
怎样编写Cmake的配置文件Cmakelisttxt
2
更具一个简单多目录c项目,学下cmakelisttxt编写规范
3
根目录下cmakelist文件内容:
set(CMAKE_INSTALL_PREFIX):设置程序的安装目录,优先级比cmake命令参数设置高。
add_subdirectory(编译文件子目录)
4
libhello 目录下的cmakelist文件内容:
5
libhello 目录下的cmakelist文件内容:
6
查看编译后结果:
7
安装后目录结构:

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。作用是他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。

只是 CMake 的组态档取名为 CMakeListstxt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。

这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

CMake是为了解决美国国家医学图书馆出资的Visible Human Project专案下的Insight Segmentation and Registration Toolkit (ITK) 软件的跨平台建构的需求而创造出来的,其设计受到了Ken Martin开发的pcmaker所影响。pcmaker当初则是为了支持Visualization Toolkit这个开放源代码的三维图形和视觉系统才出现的,VTK也采用了CMake。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。只是 CMake 的组态档取名为 CmakeListstxt。Cmake 并不直接建构出最终的软件

1、单个文件示例:
1) 首先建立文件夹CMakeTest/Src
2) 在文件夹Src中建立两个文件mainc和CMakeListstxt
3) mainc:
#include <stdioh>
int main()
{
printf("hello world");
getchar();
return 0;
}
4) CMakeListstxt
PROJECT (HELLO)
SET (SRC_LIST mainc)
ADD_EXECUTABLE (hello ${SRC_LIST})
5) 打开:开始--Microsoft Visual Studio 2012--Visual Studio Tools--VS2012 x86 Native Tools Command Prompt
6) 进入到CMakeTest/build/Src目录,执行以下代码
mkdir build & cdbuild
cmake -G"NMake Makefiles"
nmake

你机子的某个盘里建一个新的文件夹,如我这里的完整路径是:D:\CMake\CMake-Study\HelloCMake;
然后在HelloCMake文件夹里建立一个HelloCMakecpp文件,里面的代码如下:
#include
int
main()
{
std::cout

由于调试需要因此研究了一下cmake这个夸平台的编译工具的使用方法
1本人的机器为ubuntu 1004,在连网的情况下直接在终端输入:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
root@zsh-linux:~#apt-get install cmake
安装完毕之后可以在/var/cache/apt/archives看到安装的deb文件
或者在cmake官网下载cmake for linux
此时有个注意点是建议下载 cmake-284targz 而不是
cmake-284-Linux-i386targz
下载完成后解压
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
root@zsh-linux:/opt#tar -zxvf cmake-284targz
然后 cd 到cmake-284目录下
root@zsh-linux:/opt/cmake-284#
root@zsh-linux:/opt/cmake-284# /bootstrap
root@zsh-linux:/opt/cmake-284# make
root@zsh-linux:/opt/cmake-284# make install
安装完毕后查看是否安装成功:
root@zsh-linux:/opt/cmake-284# cmake --version
cmake version 284
有以上信息表示安装cmake成功。
2cmake 的使用
(1)创建一个工程目录文件夹,然后创建一个helloc
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
#include<stdioh>
int main()
{
printf(“hello,this is my first using cmake project/n”);
return 0;
}
(2)然后创建一个build目录(用于编译生成的相应文件),与helloc目录同级
(3)编写CMakeListstxt内容如下:(于helloc目录同级)
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
cmake_minimum_required(VERSION 28)
PROJECT(cmake_test)
SET(SRC_LIST mainc)
INCLUDE_DIRECTORIES(/usr/include/glib)
MESSAGE(STATUS "This is BINARY dir "${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})
(4)进入build目录输入 cmake
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
root@zsh-linux:/home/cmake_test/build# cmake
若编译成功在build目录下会生成相应文件,其中有个makefile文件
有可能会出现问题:
CMAKE_CXX_COMPILER-NOTFOUND" was not found
解决方法:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
root@zsh-linux:/home/cmake_test/build# apt-get install g++
(可选)cmake -D CMAKE_CXX_COMPLIER=”g++”CMAKE -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=”/usr/local”
(5)输入make 命令执行成功后在build目录下会看到可执行的hello
(6)/hello
输出 hello,this is my first usingcmake project。
注:这只适用于简单的工程,若复杂的工程项目请参考>1、解开freeglut-300的压缩包,用记事本打开目录树下的“READMEcmake”文件,下载Binary distributions。
2、下载好,解开其压缩包后,找到可执行文件,cmake-322-win32-x86/bin/cmake-guiexe,运行之,
3、在两个where后边填上目录树的路径(注意不是src的路径,本文以R:/freeglut-300为例),点击configure按钮,d出如下的对话框,从中选择所需的开发环境:
4、这里支持的环境好多,选择需要的环境,然后点击Finish,它会开始检查这个环境,然后给出一些配置选项:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13374716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存