【Linux】cmake

一、cmake简介:

普通的文件管理方式
在这里插入图片描述

cmake的管理方式:
在这里插入图片描述

cmake优点:cmake可以跨平台对项目进行管理,如需增加/减少源文件,对于不同的平台,只需要修改CMakeLists.txt文件内容即可。

二、cmake的基本语法

  1. 基本语法格式:指令(参数一 参数二)
    -参数使用括弧括起来;
    -参数之间使用空格或者分号隔开;
  2. 指令大小写无关,参数和变量是大小写有关的
set(HELLO main.cpp)
add_executable(hello main.cpp hello.cpp)
ADD_EXECUTABLE(hello main.cpp ${HELLO})
变量使用${变量名}方式进行取值,但是在if语句中是直接使用变量名;

三、重要的指令和常用变量

  • cmake_minimum_required指定Cmake的最小版本要求
    语法:cmake_minimum_required(VERSION version number[FATAL_ERROR])
#cmake最小版本要求2.8.3
cmake_minimum_required(VERSION 2.8.3)
  • project 定义工程名称,并指定工程支持的语言
    语法:project(projectname [cxx][c][Java])
#指定项目名字为HELLOWORLD
project(HELLOWORLD)
  • set 显式定义变量
    语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
#定义SRC变量
set(SRC hello.cpp main.cpp)
  • include_directories 向工程添加多个特定的头文件搜索路径
    相当于指定g++编译器的-l参数
    语法:include_directories(AFTER [BEFORE] [SYSTEM] dir1 dir2 ...)
#将/usr/include/myincludefolder 和 ./include添加到头文件搜索路径
include_directories(/usr/include/myincludefolder ./include)
  • link_directories 向工程内添加多个特定的库文件搜索路径
    相当于指定g++编译器的-L参数
    语法:link_directories(dir1 dir2)
#将/usr/lib/mylibfolder和./lib添加到库文件搜索路径
link_directories(/usr/lib/mylibfolder ./lib);
  • add_library 生成库文件
    语法:add_library(libname [SHARED|STATIC|MUDULE] [EXCLUDE_FROM_ALL] source1 source2 ...)
#通过变量SRC生成libhello.so共享库
add_library(hello SHARED ${SRC})
  • add_compile_options 添加编译参数
    语法:add_compile_optins(<options> ...)
#添加编译参数 -Wall -std=c++11
add_compile_optins(-Wall -std=c++11 -o2)
  • add_executable生成可执行文件
    语法:add_executable(exename source1 source2 ...)
#编译main.cpp生成可执行文件main
add_executable(main main.cpp);
  • target_link_libraries 为target添加需要链接的共享库
    相当于指定g++编译器-l 参数
    语法:target_link_libraries(target library1<debug | optimized>library2)
#将hello动态库文件链接到可执行文件main
target_link_libraries(main hello)
  • add_subdirectory 向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
    语法:add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
#添加src子目录,src中需要一个CMakeList.txt
add_subdirectory(src)
  • aux_source_directory 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个变量临时被用来自动构建源文件列表
    语法:aux_source_directory(dir VARIABlE)
#定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
#编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})

四、cmake常用变量

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMake是一个跨平台的开源构建工具,用于管理和构建软件项目。它使用简单的配置文件(CMakeLists.txt)来描述项目的构建过程,并生成适用于不同平台和编译器的构建脚本。以下是关于Linux下使用CMake的一些注意事项和常用指令: 1. 注意事项: - CMake构建专用定义文件,文件名严格区分大小写。 - 项目存在多个目录时,可以每个目录都放一个CMakeLists.txt文件,也可以只用一个CMakeLists.txt文件管理。 - 名称中只能使用字母、数字、下划线和破折号。 - 使用`${}`来引用变量。 - 参数之间使用空格进行间隔。 2. 常用指令: - `add_executable(target_name source_files)`:添加可执行文件。 - `add_library(target_name source_files)`:添加静态或动态库。 - `target_link_libraries(target_name library_name)`:链接库到目标文件。 - `include_directories(directory_path)`:添加头文件搜索路径。 - `link_directories(directory_path)`:添加库文件搜索路径。 - `set(variable_name value)`:设置变量的值。 - `if(condition)`和`endif()`:条件判断语句。 - `foreach(variable IN items)`和`endforeach()`:循环语句。 这是一个简单的示例,展示了如何使用CMake构建一个简单的C++项目: ```cmake cmake_minimum_required(VERSION 3.0) project(MyProject) # 添加可执行文件 add_executable(myapp main.cpp) # 添加头文件搜索路径 include_directories(include) # 链接库到目标文件 target_link_libraries(myapp mylib) # 设置变量的值 set(SRC_FILES src/file1.cpp src/file2.cpp) # 循环语句 foreach(file ${SRC_FILES}) message("Source file: ${file}") endforeach() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值