当前位置:网站首页 > 云服务教程 > 正文

cmakelist教程(cmakelist怎么写)



cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。它会通过写的语句自动生成一个MakeFile,从而实现高效编译

cmake_minimum_required(VERSION 2.8)

这条语句规定了执行这个cmake的版本不能低于2.8,否则会报错,要求升级cmake版本

project(HELLO)

这个命令不是强制性的,但最好都加上。它会引入两个变量 HELLO_BINARY_DIR 和 HELLO_SOURCE_DIR,同时,cmake 自动定义了两个等价的变量 PROJECT_BINARY_DIR 和 PROJECT_SOURCE_DIR

add_executable(name source…)

 
  

接着在CmakeList.txt所在的目录下执行

cmake .

make

很多时候我们构建一个二进制文件的时候,可能有几十或上百个.c或.cpp源码参与编译,如果我们在add_executable后一个个指定,效率非常低下,这时候就可以使用aux_source_directory

aux_source_directory(

)

add_library(library_name [STATIC | SHARED | MODULE] EXCLUDE_FROM_ALL source_files)

这里有两种方式,第一种为link_directories与link_libraries搭配使用,还有一种是find_library与target_link_libraries搭配,更加推荐使用第二种,因为可读性更好,可以让我们更好的了解代码的依赖关系,并且可以确保在构建过程中只链接指定的库文件

第一种方式

第二种方式(推荐使用)

find_library(LIBRARY_PATH mylibrar PATHS /path/to/library/directory1 /path/to/library/directory2)

target_link_libraries(target [item1] [item2] …)

其中 是要链接库文件的目标(例如可执行文件、静态库等),[item1]、[item2] 等是要链接到目标的库文件或目标。
item1的设置方式:


  • 可以是写死的库,例如库名为libadd.so,可以写成target_link_libraries(demo add)
  • 使用set设置变量的方式,set(LIBRARY_PATH /path/to/library),item1使用${LIBRARY_PATH}代替
  • add_library(my_library STATIC my_library.cpp) 这种方式会生成一个新的库供使用
  • 使用find_library设置的变量来链接

add_definitions(-DXXX)

-D为必须的,XXX为需要设置的宏,这样设置会让下面所有构建的目标都带上这个宏参与编译,同样不推荐使用

第二种:target_compile_definitions (推荐使用)

target_compile_definitions( …)

是要 添加宏定义的目标(例如可执行文件、静态库等)
是定义的作用 范围(例如 PUBLIC、PRIVATE 或 INTERFACE)
等是要添加的宏定义。
需要注意的是,target_compile_definitions需要写在已经构建的目标后,例如target是demo这个可执行文件,那么在target前需要首先调用add_executable,在有demo这个目标后再再调用target_compile_definitions,否则会出现构建报错








以opencv为例

 
  

include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …])

如果我们想编译一个二进制文件,而这个二进制文件需要链接一个动态库,这个动态库也是需要实时编译出来给二进制使用的,这时候我们就可以使用add_subdirectory、add_dependencies来建构

add_subdirectory(subdirectory_path binary_output_path)

add_dependencies(target_name dependency_target_name)

 
  

下面是目录结构

 
  
 
  

在主目录下执行cmake. && make,发现lib下生成了libadd.so,并且主目录下生成了我们需要的demo可执行文件,运行结果为3

当我们执行add_executable后,通常需要把二进制放到指定的目录,这时候就可以通过install来实现,相当于操作了make install

install([Target | File | Directory | Script] my_executable DESTINATION you_path)

到此这篇cmakelist教程(cmakelist怎么写)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 天国拯救战斗系统详解(天国拯救战斗技巧教程)2026-03-23 15:09:08
  • 博图v15程序加密(博图v15密钥教程)2026-03-23 15:09:08
  • junit5怎么下载(junit4下载教程)2026-03-23 15:09:08
  • webflux入门(webflux视频教程)2026-03-23 15:09:08
  • xmouse怎么设置速点(xmouse设置教程)2026-03-23 15:09:08
  • 程序员入门视频教程(程序员入门视频教程免费)2026-03-23 15:09:08
  • webflux使用教程(webflux视频教程)2026-03-23 15:09:08
  • Ubuntu镜像文件(ubuntu镜像文件下载教程)2026-03-23 15:09:08
  • xmouse怎么设置连点左键(xmouse设置教程cf)2026-03-23 15:09:08
  • nvim配置(nvim配置教程)2026-03-23 15:09:08
  • 全屏图片