zoukankan      html  css  js  c++  java
  • CMake & Ninja

    CMakeLists.txt

    cmake_minimum_required(VERSION 3.0)
    
    project(a.out C)
    
    # 设置SRC变量,包含目录下的源文件,不包括子目录
    aux_source_directory(src SRC)
    aux_source_directory(src/lib SRC)
    
    set(
        SRC
    
        ${SRC}  # 向SRC变量追加内容
        src/main.c
    )
    message(STATUS "SRC -> " "${SRC}")  # 打印变量
    
    set(EXECUTABLE_OUTPUT_PATH ..)  # 设置可执行文件输出路径
    
    add_executable("${PROJECT_NAME}" "${SRC}")
    

    执行CMake,生成Ninja脚本

    $ cmake -G Ninja -B bin
    -- The C compiler identification is GNU 10.2.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: C:/cygwin64/bin/cc.exe - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- SRC -> src/main.c;src/lib/foo.c;src/main.c
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/ly/Desktop/rust/c/bin
    

    再次运行,工作量明显减少了,同时也不用再使用-G参数声明生成器了:

    $ cmake -B bin
    -- SRC -> src/main.c;src/lib/foo.c;src/main.c
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/ly/Desktop/rust/c/bin
    

    执行Ninja

    $ ninja -C bin
    ninja: Entering directory `bin'
    [3/3] Linking C executable ..a.out.exe
    

    当修改了CMakeLists.txt后,无需再次CMake,ninja会重新运行它:

    ninja -C bin
    ninja: Entering directory `bin'
    [0/1] Re-running CMake...
    -- SRC -> src/main.c;src/lib/foo.c;src/main.c
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/ly/Desktop/rust/c/bin
    [3/3] Linking C executable ..a.exe
    

    END

  • 相关阅读:
    彻底禁用resource manager
    NYOJ_94 cigarettes 递归VS迭代
    itunes connect上传截图提示无法加载文件问题
    hdu 1165 Eddy's research II(数学题,递推)
    USACO holstein 超时代码
    金蝶KIS标准版与金蝶K3的差别
    OC第三天(内存管理)
    HDU 1059 Dividing(多重背包)
    说说參数传递(泛型托付)
    Json数组操作小记 及 JSON对象和字符串之间的相互转换
  • 原文地址:https://www.cnblogs.com/develon/p/14658047.html
Copyright © 2011-2022 走看看