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

  • 相关阅读:
    GPO
    GPO
    GPO
    Active Directory
    Active Directory
    Ethical Hacking
    Tree and Queries CodeForces
    数颜色 HYSBZ
    Powerful array CodeForces
    Group HDU
  • 原文地址:https://www.cnblogs.com/develon/p/14658047.html
Copyright © 2011-2022 走看看