XMake 和 CMake 简介 含简单例子创建可执行程序/库

2023年 8月 26日 62.4k 0

一、简介

1. XMake 和 CMake 简介:

XMake 和 CMake 都是现代的跨平台构建系统,但它们在设计和实现上有所不同。

XMake:

  • 是一个基于 Lua 的构建工具,让用户能用 Lua 语言描述构建逻辑。
  • 提供了交互式界面来配置和编译项目。
  • 设计上更为简洁,对于不太复杂的项目可能会更加直观。

CMake:

  • 是一个流行的、成熟的跨平台构建工具。
  • 使用自己的脚本语言描述构建过程。
  • 能生成各种构建系统的文件,例如 Makefile、Ninja、Xcode、Visual Studio 解决方案等。
  • 拥有丰富的社区和大量的模块支持。

二、创建可执行程序

XMake 教学:

  • 安装:

    使用 LuaRocks 或直接从 GitHub 克隆并安装:

    luarocks install xmake
    

    git clone https://github.com/tboox/xmake.git
    cd xmake
    ./install
    
  • 简单的 XMake.lua 示例:

    target("hello")
        set_kind("binary")
        add_files("src/*.c")
    
  • 构建项目:

    xmake
    
  • CMake 教学:

  • 安装:

    多数系统都提供了方便的包管理器来安装 CMake,例如在 Ubuntu 中:

    sudo apt-get install cmake
    
  • 简单的 CMakeLists.txt 示例:

    cmake_minimum_required(VERSION 3.10)
    project(HelloWorld)
    add_executable(hello src/main.c)
    
  • 构建项目:

    mkdir build
    cd build
    cmake ..
    make
    
  • 总结:

    • XMake 可能对于简单的项目来说更直观,而且使用 Lua 语言。
    • CMake 是一个非常强大且成熟的构建系统,适用于大型项目,但其语法可能需要一段时间来适应。

    三、创建库

    CMake

    1. 创建库

    如果您想创建一个库而不是一个可执行文件,可以这样做:

    add_library(my_library STATIC src/library_source.c)
    

    此处,STATIC 指明了创建一个静态库。你也可以使用 SHARED 来创建动态库。

    2. 链接库

    要将库链接到您的可执行文件,使用 target_link_libraries

    target_link_libraries(hello my_library)
    

    3. 寻找包和库

    CMake 提供了 find_package 来帮助查找和链接外部库:

    find_package(SomeLibrary REQUIRED)
    target_link_libraries(my_project SomeLibrary::SomeLibrary)
    

    4. 设置编译选项

    可以使用 target_compile_optionstarget_compile_definitions 来为特定目标设置编译选项和预处理定义:

    target_compile_options(my_project PRIVATE -Wall -Wextra)
    target_compile_definitions(my_project PRIVATE SOME_DEFINITION=1)
    

    XMake

    1. 创建库

    与 CMake 类似,您可以使用 XMake 创建库:

    target("my_library")
        set_kind("static")
        add_files("src/library_source.c")
    

    使用 set_kind("shared") 可以创建动态库。

    2. 链接库

    要将库链接到您的应用程序,可以这样做:

    target("hello")
        set_kind("binary")
        add_files("src/main.c")
        add_deps("my_library")
    

    3. 添加定义和编译选项

    target("hello")
        add_defines("SOME_DEFINITION=1")
        add_cxflags("-Wall", "-Wextra")
    

    这里,add_cxflags 为 C 和 C++ 源文件添加编译选项。

    4. 条件编译

    XMake 支持条件编译,这可以帮助你为特定平台或环境提供特定的编译选项或源文件:

    target("hello")
        on_platform("linux", function (target)
            target:add("files", "src/linux/*.c")
        end)
        on_platform("windows", function (target)
            target:add("files", "src/windows/*.c")
        end)
    

    这只是 CMake 和 XMake 的一些基本功能。它们都提供了更多的高级特性,如安装、测试、脚本、包管理等功能。如果你有关于特定功能的疑问,或想了解更多,请评论!

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论