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

  • 相关阅读:
    webrtc 手机端视频旋转
    gstreamer 命令行一些demo
    git一些命令记录
    libnice的问题记录
    webrtc ice 协商一些记录
    linux 挂在windows目录
    leetcode Permutation Sequence
    gstreamer 接收rtsp存储为h264
    uva 10285
    AndroidStudio VS Eclipse快捷键
  • 原文地址:https://www.cnblogs.com/develon/p/14658047.html
Copyright © 2011-2022 走看看