【Linux】CMake安装及使用方法 {安装CMake;编写CMakeLists.txt文件;生成Makefile文件并编译项目;高级配置选项;常见问题与解决方案}

CMake是一种跨平台编译工具,它允许开发者编写CMakeLists.txt文件,然后通过cmake命令将这些文件转化为make所需的Makefile文件,最后使用make命令编译源代码生成可执行程序或库文件。以下是CMake的使用方法:

一、安装CMake

  1. 下载CMake安装包
    • 访问CMake官方网站(https://cmake.org/download/),下载适用于操作系统的CMake安装包。
  2. 安装CMake
    • 对于Windows系统,双击下载好的CMake安装包,启动安装程序,选择CMake的安装路径,并完成安装。
    • 对于其他操作系统,如Linux或macOS,通常可以通过包管理器(如apt、yum、brew等)来安装CMake。
    • 我是ubuntu服务器,使用sudo apt install camke -y命令进行安装
  3. 验证安装
    • 打开命令行工具(如Windows的命令提示符、Linux的终端等),输入cmake --version,如果显示出CMake的版本信息,说明安装成功。

二、编写CMakeLists.txt文件

CMakeLists.txt文件是CMake的核心配置文件,它包含了项目的编译信息。以下是一个简单的CMakeLists.txt文件的示例:

# 指定CMake编译最低要求版本  
cmake_minimum_required(VERSION 3.10)  
  
# 给项目命名  
project(MyProject)  
  
# 指定C++标准(可选)  
set(CMAKE_CXX_STANDARD 11)  
  
# 收集源文件并赋值给变量  
set(SRC_LIST main.cpp) # 可以添加多个源文件,如 set(SRC_LIST main.cpp foo.cpp bar.cpp)  
  
# 指定头文件目录(如果有)  
include_directories(${PROJECT_SOURCE_DIR}/include)  
  
# 指定生成可执行文件的名称和源文件  
add_executable(MyExecutable ${SRC_LIST})  # 这里要注意对变量的引用格式

三、生成Makefile文件并编译项目

  1. 生成Makefile文件
    • 打开命令行工具,导航到包含CMakeLists.txt文件的目录。
    • 执行cmake .命令(或者cmake -S . -B build命令来指定源目录和构建目录),CMake将读取CMakeLists.txt文件并生成Makefile文件。
  2. 编译项目

四、高级配置选项

CMake还支持许多高级配置选项,如设置编译选项、指定目标属性、添加子目录等。以下是一些常用的高级配置选项:

  1. 设置编译选项

    add_compile_options(-Wall -Wextra -std=c++11)
    
  2. 指定目标属性

    set_target_properties(MyExecutable PROPERTIES OUTPUT_NAME "MyExecutableName")
    
  3. 添加子目录

    add_subdirectory(subdir)
    

    其中subdir是包含另一个CMakeLists.txt文件的子目录。

  4. 链接库文件

    如果项目需要链接外部库文件,可以使用target_link_libraries命令。例如:

    target_link_libraries(MyExecutable MyLibrary)
    

    其中MyLibrary是外部库的名称(可能需要指定库的路径和名称前缀/后缀)。

  5. 添加预处理器定义:

    这个命令允许你为特定的目标添加预处理器定义,并且可以选择是否将这些定义导出到依赖的目标

    target_compile_definitions(my_target PRIVATE MY_MACRO)
    

    PRIVATE是私有的不会导出到依赖的目标,而PUBLIC是公有的则相反


五、常见问题与解决方案

  1. 如何找到所有源文件

    可以使用aux_source_directory命令来找到指定目录下的所有源文件,并将其存储在一个变量中。例如:

    aux_source_directory(. SRC_LIST)  
    add_executable(MyExecutable ${SRC_LIST})
    
  2. 如何指定编译目标

    可以使用project命令来指定项目的名称和编译目标。例如:

    project(MyProject)
    
  3. 如何区分Debug和Release版本

    可以在构建时通过cmake -DCMAKE_BUILD_TYPE=Debugcmake -DCMAKE_BUILD_TYPE=Release来指定编译类型。此外,还可以在CMakeLists.txt文件中使用条件语句来设置不同的编译选项。

  4. 源目录和构建目录分别存放什么?

    在使用CMake进行项目管理时,源目录(Source Directory)和构建目录(Build Directory)是两个重要的概念。它们各自承担着不同的角色,共同协作以完成项目的构建过程。

    源目录(source)

    源目录是存放项目源代码的目录。这个目录通常包含了项目的源文件(如.cpp.h等)、CMakeLists.txt配置文件以及其他与源代码相关的资源文件。CMakeLists.txt文件是CMake的核心配置文件,它定义了项目的构建规则、源文件列表、依赖关系等关键信息。

    可以将项目目录作为源目录,不另行创建。

    构建目录(build)

    构建目录是CMake用于存放构建过程中生成的文件和临时文件的目录。这些文件包括生成的Makefile文件、编译过程中产生的中间文件(如目标文件.o.obj)、最终生成的可执行文件或库文件等。构建目录与源目录是分开的,这种分离的做法有助于保持源目录的整洁性,避免构建过程中产生的文件对源代码造成污染。

通过以上步骤和配置选项,开发者可以使用CMake来构建和管理跨平台项目。CMake的灵活性和可扩展性使其成为现代软件开发中不可或缺的工具之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

52Hertz_Echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值