【Linux】CMake安装及利用方法 {安装CMake;编写CMakeLists.txt文件;天生M ...

打印 上一主题 下一主题

主题 999|帖子 999|积分 2997

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


  • 下载CMake安装包

    • 访问CMake官方网站(https://cmake.org/download/),下载实用于利用体系的CMake安装包。

  • 安装CMake

    • 对于Windows体系,双击下载好的CMake安装包,启动安装步伐,选择CMake的安装路径,并完成安装。
    • 对于其他利用体系,如Linux或macOS,通常可以通过包管理器(如apt、yum、brew等)来安装CMake。
    • 我是ubuntu服务器,利用sudo apt install camke -y命令进行安装

  • 验证安装

    • 打开命令行工具(如Windows的命令提示符、Linux的终端等),输入cmake --version,如果体现出CMake的版本信息,阐明安装乐成。


二、编写CMakeLists.txt文件

CMakeLists.txt文件是CMake的核心配置文件,它包含了项目的编译信息。以下是一个简单的CMakeLists.txt文件的示例:
  1. # 指定CMake编译最低要求版本  
  2. cmake_minimum_required(VERSION 3.10)  
  3.   
  4. # 给项目命名  
  5. project(MyProject)
  6.   
  7.   
  8. # 指定C++标准(可选)  
  9. set(CMAKE_CXX_STANDARD 11)  
  10.   
  11. # 收集源文件并赋值给变量  
  12. set(SRC_LIST main.cpp) # 可以添加多个源文件,如 set(SRC_LIST main.cpp foo.cpp bar.cpp)  
  13.   
  14. # 指定头文件目录(如果有)  
  15. include_directories(${PROJECT_SOURCE_DIR}/include)  
  16.   
  17. # 指定生成可执行文件的名称和源文件  
  18. add_executable(MyExecutable ${SRC_LIST})  # 这里要注意对变量的引用格式
复制代码

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


  • 天生Makefile文件

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

  • 编译项目

    • 执行make命令(如果利用了构建目次,则必要在该目次中执行make),Makefile文件将被用来编译项目并天生可执行文件。
    • 关于make命令的利用方法,请查阅文章【Linux体系】开发工具(下) {调试器gdb,自动化构建工具make/Makefile,多文件编译,代码管理平台git}_make debug模式-CSDN博客


四、高级配置选项

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

  • 设置编译选项
    1. add_compile_options(-Wall -Wextra -std=c++11)
    复制代码
  • 指定目标属性
    1. set_target_properties(MyExecutable PROPERTIES OUTPUT_NAME "MyExecutableName")
    复制代码
  • 添加子目次
    1. add_subdirectory(subdir)
    复制代码
    此中subdir是包含另一个CMakeLists.txt文件的子目次。
  • 链接库文件
    如果项目必要链接外部库文件,可以利用target_link_libraries命令。例如:
    1. target_link_libraries(MyExecutable MyLibrary)
    复制代码
    此中MyLibrary是外部库的名称(可能必要指定库的路径和名称前缀/后缀)。
  • 添加预处置惩罚器定义:
    这个命令允许你为特定的目标添加预处置惩罚器定义,而且可以选择是否将这些定义导出到依靠的目标
    1. target_compile_definitions(my_target PRIVATE MY_MACRO)
    复制代码
    PRIVATE是私有的不会导出到依靠的目标,而PUBLIC是公有的则相反

五、常见题目与解决方案


  • 如何找到全部源文件
    可以利用aux_source_directory命令来找到指定目次下的全部源文件,并将其存储在一个变量中。例如:
    1. aux_source_directory(. SRC_LIST)  
    2. add_executable(MyExecutable ${SRC_LIST})
    复制代码
  • 如何指定编译目标
    可以利用project命令来指定项目的名称和编译目标。例如:
    1. project(MyProject)
    复制代码
  • 如何区分Debug和Release版本
    可以在构建时通过cmake -DCMAKE_BUILD_TYPE=Debug或cmake -DCMAKE_BUILD_TYPE=Release来指定编译范例。此外,还可以在CMakeLists.txt文件中利用条件语句来设置不同的编译选项。
  • 源目次和构建目次分别存放什么?
    在利用CMake进行项目管理时,源目次(Source Directory)和构建目次(Build Directory)是两个重要的概念。它们各自承担着不同的角色,共同协作以完成项目的构建过程。
    源目次(source)
    源目次是存放项目源代码的目次。这个目次通常包含了项目的源文件(如.cpp、.h等)、CMakeLists.txt配置文件以及其他与源代码相关的资源文件。CMakeLists.txt文件是CMake的核心配置文件,它定义了项目的构建规则、源文件列表、依靠关系等关键信息。
    可以将项目目次作为源目次,不另行创建。
    构建目次(build)
    构建目次是CMake用于存放构建过程中天生的文件和临时文件的目次。这些文件包括天生的Makefile文件、编译过程中产生的中央文件(如目标文件.o或.obj)、最终天生的可执行文件或库文件等。构建目次与源目次是分开的,这种分离的做法有助于保持源目次的整洁性,制止构建过程中产生的文件对源代码造成污染。
通过以上步调和配置选项,开发者可以利用CMake来构建和管理跨平台项目。CMake的机动性和可扩展性使其成为现代软件开发中不可或缺的工具之一。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表