Ninja介绍

      Ninja是一个小型构建系统,专注于速度。它以文件间的相互依赖关系(通常是源代码和输出的可执行文件)作为输入,并快速地协调构建过程。它的独特目标是速度。构建始终并行运行,默认情况下基于系统CPU的数量。源码地址:https://github.com/ninja-build/ninja,license为Apache-2.0,最新发布版本为v1.13.2。

      Windows、Linux和Mac操作系统上可直接下载二进制可执行文件,无需安装,如Windows上下载ninja-win.zip,解压后就仅有一个ninja.exe文件。注:Ninja是一个独立的程序,而不是库,因此没有公共API

      Ninja可以构建C/C++、Rust、Fortran、Go、Java、Python项目,甚至任何"能够通过命令行执行构建命令"的东西,Ninja本身基本不关心"语言",Ninja只是根据build.ninja中定义的规则执行命令

      运行Ninja:默认情况下,它会在当前目录中查找名为build.ninja的文件,并构建所有过期的目标。

      较新版本的VS已自带ninja

      Ninja在Windows上使用简单示例

      1.main.cpp文件内容如下:

#include <iostream>

int main()
{
    std::cout << "hello ninja" << std::endl;
    return 0;
}

      2.CMakeLists.txt文件内容如下:

cmake_minimum_required(VERSION 3.21.0)
project(ninja_demo)

message(STATUS "build type: ${CMAKE_BUILD_TYPE}")
set(CMAKE_CXX_STANDARD 20)

add_executable(${PROJECT_NAME}
    main.cpp
)

      3.打开终端"x64 Native Tools Command Prompt for VS 2022"

      4.将其定位ninja示例目录下

      5.执行命令"cmake -S . -B build -G Ninja" ,执行完此命令后会产生build目录,结果如下图所示:

      6.build目录会生成build.ninja文件,内容如下:

# CMAKE generated file: DO NOT EDIT!
# Generated by "Ninja" Generator, CMake Version 4.3

# This file contains all the build statements describing the
# compilation DAG.

# =============================================================================
# Write statements declared in CMakeLists.txt:
# 
# Which is the root file.
# =============================================================================

# =============================================================================
# Project: ninja_demo
# Configurations: Release
# =============================================================================

#############################################
# Minimal version of Ninja required by this file

ninja_required_version = 1.5


#############################################
# Set configuration variable for custom commands.

CONFIGURATION = Release
# =============================================================================
# Include auxiliary files.


#############################################
# Include rules file.

include CMakeFiles\rules.ninja

# =============================================================================

#############################################
# Logical path to working directory; prefix for absolute paths.

cmake_ninja_workdir = D$:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\build\
# =============================================================================
# Object build statements for EXECUTABLE target ninja_demo


#############################################
# Order-only phony target for ninja_demo

build cmake_object_order_depends_target_ninja_demo: phony || .

build CMakeFiles\ninja_demo.dir\main.cpp.obj: CXX_COMPILER__ninja_demo_unscanned_Release D$:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\main.cpp || cmake_object_order_depends_target_ninja_demo
  CONFIG = Release
  FLAGS = /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD
  OBJECT_DIR = CMakeFiles\ninja_demo.dir
  OBJECT_FILE_DIR = CMakeFiles\ninja_demo.dir
  TARGET_COMPILE_PDB = CMakeFiles\ninja_demo.dir\
  TARGET_PDB = ninja_demo.pdb
  TARGET_SUPPORT_DIR = CMakeFiles\ninja_demo.dir


# =============================================================================
# Link build statements for EXECUTABLE target ninja_demo


#############################################
# Link the executable ninja_demo.exe

build ninja_demo.exe: CXX_EXECUTABLE_LINKER__ninja_demo_Release CMakeFiles\ninja_demo.dir\main.cpp.obj
  CONFIG = Release
  FLAGS = /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -MD
  LINK_FLAGS = /machine:x64 /INCREMENTAL:NO /subsystem:console
  LINK_LIBRARIES = kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
  OBJECT_DIR = CMakeFiles\ninja_demo.dir
  POST_BUILD = cd .
  PRE_LINK = cd .
  TARGET_COMPILE_PDB = CMakeFiles\ninja_demo.dir\
  TARGET_FILE = ninja_demo.exe
  TARGET_IMPLIB = ninja_demo.lib
  TARGET_PDB = ninja_demo.pdb
  TARGET_SUPPORT_DIR = CMakeFiles\ninja_demo.dir


#############################################
# Utility command for edit_cache

build CMakeFiles\edit_cache.util: CUSTOM_COMMAND
  COMMAND = C:\Windows\system32\cmd.exe /C "cd /D D:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\build && D:\soft\cmake-4.3.2-windows-x86_64\bin\cmake-gui.exe -SD:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage -BD:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\build"
  DESC = Running CMake cache editor...
  pool = console
  restat = 1

build edit_cache: phony CMakeFiles\edit_cache.util


#############################################
# Utility command for rebuild_cache

build CMakeFiles\rebuild_cache.util: CUSTOM_COMMAND
  COMMAND = C:\Windows\system32\cmd.exe /C "cd /D D:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\build && D:\soft\cmake-4.3.2-windows-x86_64\bin\cmake.exe --regenerate-during-build -SD:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage -BD:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\build"
  DESC = Running CMake to regenerate build system...
  pool = console
  restat = 1

build rebuild_cache: phony CMakeFiles\rebuild_cache.util

# =============================================================================
# Target aliases.

build ninja_demo: phony ninja_demo.exe

# =============================================================================
# Folder targets.

# =============================================================================

#############################################
# Folder: D:/GitCode/Linux_Code_Test/Samples_CMake/ninja_usage/build

build all: phony ninja_demo.exe

# =============================================================================
# Built-in targets


#############################################
# Re-run CMake if any of its inputs changed.

build build.ninja D$:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\build\cmake_install.cmake: RERUN_CMAKE | CMakeCache.txt CMakeFiles\4.3.2\CMakeCCompiler.cmake CMakeFiles\4.3.2\CMakeCXXCompiler.cmake CMakeFiles\4.3.2\CMakeRCCompiler.cmake CMakeFiles\4.3.2\CMakeSystem.cmake D$:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\CMakeLists.txt D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeCInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeCXXInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeCommonLanguageInclude.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeGenericSystem.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeInitializeConfigs.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeLanguageInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeRCInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeSystemSpecificInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeSystemSpecificInitialize.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\CMakeCommonCompilerMacros.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Internal\CMakeCLinkerInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Internal\CMakeCXXLinkerInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Internal\CMakeCommonLinkerInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Linker\MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Linker\MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Linker\MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Linker\Windows-MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Linker\Windows-MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Linker\Windows-MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-Initialize.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\WindowsPaths.cmake
  pool = console


#############################################
# A missing CMake input file is not an error.

build CMakeCache.txt CMakeFiles\4.3.2\CMakeCCompiler.cmake CMakeFiles\4.3.2\CMakeCXXCompiler.cmake CMakeFiles\4.3.2\CMakeRCCompiler.cmake CMakeFiles\4.3.2\CMakeSystem.cmake D$:\GitCode\Linux_Code_Test\Samples_CMake\ninja_usage\CMakeLists.txt D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeCInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeCXXInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeCommonLanguageInclude.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeGenericSystem.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeInitializeConfigs.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeLanguageInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeRCInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeSystemSpecificInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\CMakeSystemSpecificInitialize.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\CMakeCommonCompilerMacros.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Compiler\MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Internal\CMakeCLinkerInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Internal\CMakeCXXLinkerInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Internal\CMakeCommonLinkerInformation.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Linker\MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Linker\MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Linker\MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Linker\Windows-MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Linker\Windows-MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Linker\Windows-MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-Initialize.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-MSVC-C.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-MSVC-CXX.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows-MSVC.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\Windows.cmake D$:\soft\cmake-4.3.2-windows-x86_64\share\cmake-4.3\Modules\Platform\WindowsPaths.cmake: phony


#############################################
# Clean all the built files.

build clean: CLEAN


#############################################
# Print all primary targets available.

build help: HELP


#############################################
# Make the all target the default.

default all

      7.执行命令"ninja -C build",在build目录下生成可执行文件ninja_demo.exe,结果如下图所示:

      GitHubhttps://github.com/fengbingchun/Linux_Code_Test

本资源为陕西省 2023 年水系分布数据,涵盖河流、沟渠、支流等线状要素,以及湖泊、水库、湿地等面状水体,提供完整的二维水文地理框架。数据以标准 GIS 格式发布,包含可编辑 MXD 工程文件、Shapefile 数据以及标准制图 TIF,适用于科研、规划设计、生态评估与地图制图等多类应用场景。【数据内容】1、水系线状要素(.shp)包括主要河流、支流、人工渠道等属性字段涵盖:名称、类别等线要素拓扑规范,无断裂与悬挂节点2、水体面状要素(.shp)覆盖湖泊、水库、池塘、湿地等面状水体属性包含:名称、类型等信息几何边界经过平滑与精修,保证面积统计可靠3、可编辑 MXD 工程文件(.mxd)预设图层渲染、图例、比例尺、指北针与布局支持用户根据自身制图需求快速调整样式、色带及标注规则博主使用的 ArcMap 10.8 环境4、标准成图 TIF(.tif)专业级地图输出,含必要图廓与标注,可直接用于报告、论文与展示输出分辨率高,适合印刷与电子稿应用【数据技术说明】坐标系统:WGS 84 地理坐标系数据年份:2023 年制作流程:基于卫星影像、水利普查数据和地理编码信息进行提取 → 几何校正 → 拓扑审查 → 分类整理 → 成图渲染质量控制措施:保证线状与面状水体不重叠、不缺失;对水库与湖泊边界进行了人工校核,提高空间精度【应用价值】地表水资源调查与监测,水利、水文模型的空间输入,城市与农村规划中的水系布局分析,生态修复、水环境治理与湿地保护研究,教学、制图与地理信息可视化应用【使用说明】首次打开 MXD 文件前,请确保 Shapefile 和栅格文件均已解压至同一目录,以免出现路径丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值