cmake语法,cmake菜鸟教程

  • 英语语法
  • 2024-02-03

cmake语法?4. cmake是跨项目管理,它用更抽象的语法来组织项目。虽然,仍然是目标,依赖之类的东西,但更为抽象和友好,比如你可用math表示数学库,而不需要再具体指定到底是math.dll还是libmath.so,那么,cmake语法?一起来了解一下吧。

cmake语法详解

当我们在写CMakeLists.txt文件时,常常会搞不明白link_directories, LINK_LIBRARIES, target_link_libraries这3者的区别,下面就其详细介绍:

它相当于g++选项中的-I参数的作用,也相当于环境变量中增加路径到CPLUS_INCLUDE_PATH变量的作用(这里特指c++。c和 Java 中用法类似)。

比如:

语法:

它相当于g++命令的-L选项的作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用。

比如:

List of direct link dependencies.

比如:

也可以写成:

语法:TARGET_LINK_LIBRARIES(targetlibrary1 library2 ..)

比如(以下写法(包括备注中的)都可以):

再如:

CMakeLists文件链接方式有如下2种:

cmake干啥用的通俗点

在一个月黑风高的晚上,写了一篇makefile的文章被网友揍了一堆,说这种方式太老了,但是我觉得技术并没有新和旧之分,还是应网友要求写一篇cmake的文章。

CMake是一个跨的安装,可以用简单的语句来描述所有的安装(编译过程)。产生对应的makefile文件。懂cmake,只需配置对应的头文件路径,源文件等参数既可以快速生成对应的Makefile文件,相比Makefile来说语法规则是比较容易的,并且cmake是跨的,应用是比较广泛的。

1、编写CMake的配置文件CMakeList.txt

2、创建build目录用来存放cmake生成的临时文件。

3、cd build && cmake ../ 编译工程

4、make install 将生成的可执行文件安装到对应的目录。

逐行分析:

cmake_minimum_required :设定cmake的最低版本要求

project(Test):将当前工程名字设定为Test,不是可执行文件名

add_executable(main.bin main.c) :设定生成可执行文件名为main.bin 以及编译需要的源文件main.c

install:设定编译生成的main.bin安装目录,安装路径为CMakeLists.txt所在目录

makefile是自动生成的吗

CMake是一个跨的安装(编译),可以用简单的语句来描述所有的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的,这种可以使用各的原生建构的能力是 CMake 和 SCons 等其他类似的区别之处。

CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支持 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支持静态与动态程式库的建构。

“CMake”这个名字是“cross platform make”的缩写。

cmake常用命令用法

c++基础00,让程序运行起来需要经过编译、链接,最后才是可以运行的可执行文件。

1、绪论

无论是新手,还是老手,让程序跑起来都是一件令人开心的事情。对于c/c++的程序而言,有时候让程序运行起来并不是很容易的事情。

c/c++的程序在编写完成之后,需要经过编译、链接,最后才是可以运行的可执行文件。如果是仅仅依赖标准库的单个源文件,运行程序还是比较简单的。但是,如何涉及多个源文件,涉及第三方库,动态链接库,如何让主程序运行起来是比较头疼的;这在工程项目中又是普遍存在的。

2、不同的运行方式

2.1单个c++源文件,而且不涉及第三方库

Windows下面推荐使用IDE devcpp,可以对单个文件进行编译运行,集成了编辑器、编译器、链接器和运行调试,对单个CPP文件也不用建立工程项目。Ubuntu直接g++main.cpp-o main;main就行。对于写算法题,测试某个函数,都是比较方便的。

2.2项目工程文件

一般一个项目涉及多个CPP源文件,还很有可能会用到多个第三方库,比如图像处理的OpenCV,日志记录的spdlog,通用型库boost,网络库asio,点云处理库PCL。

cmake源码编译

作者:玟清

zhihu/question/27455963/answer/36722992

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1. make 是用来执行Makefile的

2. Makefile是类unix环境下(比如Linux)的类似于批处理的"脚本"文件。其基本语法是: 目标+依赖+命令,只有在目标文件不存在,或目标比依赖的文件更旧,命令才会被执行。由此可见,Makefile和make可适用于任意工作,不限于编程。比如,可以用来管理latex。

3. Makefile+make可理解为类unix环境下的项目管理,但它太基础了,抽象程度不高,而且在windows下不太友好(针对visual studio用户),于是就有了跨项目管理cmake

4. cmake是跨项目管理,它用更抽象的语法来组织项目。虽然,仍然是目标,依赖之类的东西,但更为抽象和友好,比如你可用math表示数学库,而不需要再具体指定到底是math.dll还是libmath.so,在windows下它会支持生成visual studio的工程,在linux下它会生成Makefile,甚至它还能生成eclipse工程文件。

以上就是cmake语法的全部内容,CMake是一个跨的安装,可以用简单的语句来描述所有的安装(编译过程)。产生对应的makefile文件。懂cmake,只需配置对应的头文件路径,源文件等参数既可以快速生成对应的Makefile文件。

猜你喜欢