CMake是一个跨平台的编译自动配置工具,它使用一个名为CMakeLists.txt的文件来描述构建过程,可以产生标准的构建文件。它可以用简单的语句来描述所有平台的安装(编译过程)。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。
CMake可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake支持in-place建构(二进档和源代码在同一个目录树中)和out-of-place建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake也支持静态与动态程式库的建构。CMake是一个比make更高级的编译配置工具。
CMake的组态档取名为CMakeLists.txt。组态档是用一种建构软件专用的特殊编程语言写的CMake脚本。文件CMakeLists.txt需要手工编写,也可以通过编写脚本进行半自动的生成。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。
CMake主要特点:(1)、开放源代码,使用类BSD许可发布;(2)、跨平台,并可生成native编译配置文件,在Linux/Unix平台,生成makefile;在苹果平台,可以生成xcode;在windows平台,可以生成msvc的工程文件;(3)、能够管理大型项目;(4)、简化编译构建过程和编译过程,CMake的工具链非常简单:cmake+make;(5)、高效率;(6)、可扩展,可以为cmake编写特定功能的模块,扩充cmake功能。
CMakeLists.txt中命令不区分大小写,参数和变量区分大小写,注释采用#号,变量使用${xxx}引用,
cmake --version 检查cmake是否安装以及版本号
apt-get install cmake 安装cmake
find_package可以帮助解决整个工程的依赖问题,自动把头文件和动态链接文件配置好
find_package( Sophus REQUIRED )
include_directories( ${Sophus_INCLUDE_DIRS} )
add_executable( useSophus useSophus.cpp )
target_link_libraries( useSophus ${Sophus_LIBRARIES} )
原文:https://www.cnblogs.com/larry-xia/p/11518520.html