ninja VS cmake

背景:为什么要使用ninja进行项目编译?

Ninja的作用是加速构建,最初目的是替代make,现在Windows系统上也可以用,
也就是用Ninja替代nmake或者MSBuild来生成target。Ninja 是Google的一名程
序员推出的注重速度的构建工具,一般在Unix/Linux上的程序通过make/makefile
来构建编译,而Ninja通过将编译任务并行组织,大大提高了构建速度。
官网:ninja地址
Gitub:ninja-build

关于使用ninja编译和cmake生成sln工程然后进行编译区别

实际上在Windows上使用CMake可以直接进行编译生成.sln工程文件,然后在VS里面进行编译即可。但是那个也仅仅限制于在别人已经写好的基础上进行二次开发进行调试比较边界,但是如果想要利用CMake生成已经调好的程序(没有一点点错误),那么使用我们的ninja构建CMakeLists.txt比
make工具(MSVC编译生成静态库和动态库以及可执行文件)更快,接下来用生成对应的项目程序
来显示它的好处。
使用生成VS工程进行编译

mkdir build_vs
cd build_vs

cmake -G "Visual Studio 16 2019" -A x64 ^
    -DCMAKE_BUILD_TYPE=RelWithDebInfo ^
    -DCMAKE_TOOLCHAIN_FILE=%CONDA_PREFIX%\h2o.cmake ^
    -DH2O_BUILD_SHARED=ON ^
    -DH2O_BUILD_TEST=ON ^
    -DH2O_BUILD_DOG=OFF ^
    -DH2O_BUILD_SERIAL=ON ^
    -DH2O_VERSION_NAME=kinsar ^
    ../

cd ..

生成的sln工程Linsar外层目录如下
外层目录
生成的sln工程Linsar内层目录如下
生成sln工程

进入.sln右键全部生成ALL_BUILD进行编译
sln
使用ninja进行稳定版本的编译

mkdir build
cd build

pushd %VS2019INSTALLDIR%
call VC\Auxiliary\Build\vcvars64.bat
popd


cmake -GNinja ^
    -DCMAKE_BUILD_TYPE=RelWithDebInfo ^
    -DCMAKE_TOOLCHAIN_FILE=%CONDA_PREFIX%\h2o.cmake ^
    -DH2O_BUILD_SHARED=ON ^
    -DH2O_BUILD_TEST=ON ^
    -DH2O_BUILD_DOG=OFF ^
    -DH2O_BUILD_SERIAL=OFF ^
    -DH2O_VERSION_NAME=kinsar ^
    ../

ninja

"bin/kinsar.exe" 
pushd %VS2019INSTALLDIR%
call VC\Auxiliary\Build\vcvars64.bat
popd
//给ninja工程指定对应的C++、C编译器
cmake -GNinja ^
//生成ninja工程或者说使用ninja进行编译而不是生成sln进行VS生成makefile编译
ninja
//执行编译过程

"bin/kinsar.exe" 
//指定编译完之后的启动项为bin目录下的kinsar.exe,连register步骤都直接省略了

ninja编译过程如下
在这里插入图片描述

使用Ninja生成的Linsar外层目录
ninja工程目录
使用Ninja生成的Linsar内层目录
build目录下的内容

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值