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

  • 相关阅读:
    html5与css交互 API 《一》classList
    HTML5标签速查
    html5中常被忘记的标签,属性
    html5不熟悉的标签全称
    基于HTML5的网络拓扑图(1)
    HTML5 Canvas绘制效率如何?
    前端性能优化(Application Cache篇)
    Android独立于Activity或者Fragment的LoadingDialog的实现
    android常用设计模式的理解
    android使用android:ellipsize="end"无效的解决方法
  • 原文地址:https://www.cnblogs.com/develon/p/14658047.html
Copyright © 2011-2022 走看看