做网站的前端是做什么/公司seo是什么级别

此ninja,非naruto,也非boruto,而是google一位员工开发的小而快的构建系统,能并行编译任务所以速度较快。我好像是上学的时候编译OpenCV(学习OpenCV半途而废)时候用过一次。比较小众的构建系统,没有CMAKE、Scons等出名,功能也没那么复杂,符合我喜欢折腾的性格,周末正好用pybind11做个CAN-2E-U的python扩展,为了用pybind11,用镜像强行升级VS2015到update 3,导致vs2015直接GG,打不开了,但是编译链接工具在命令行还是能用的,所以只能命令行编译链接,手动编译链接没啥意思,所以就想到用ninja来构建,纯属兴趣瞎折腾,其实手动编译链接也用不了几条命令。
主要文件如下图所示,main.cpp 、can2eu.cpp、 can2eu.h为源文件,build.ninja是构建配置文件,其他的是周立功CAN-2E-U API文件,动态库,头文件啥的。

#build.ninja文件
# Variables
CXXFLAGS = -nologo -O2 -MT -W3 -EHsc
INCPATH = -I. -IC:Miniconda3includepybind11 -IC:Miniconda3include
LFLAGS = /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /DLL /SUBSYSTEM:CONSOLE
LIBPATH = /LIBPATH:. /LIBPATH:C:Miniconda3libs
LIBS = ControlCAN.lib python36.lib
TARGETNAME = pyCAN2EU#Rules
rule cccommand = cl.exe $CXXFLAGS $INCPATH /c $in /Fo$outrule linkcommand = link.exe $LFLAGS $LIBPATH $LIBS $in /OUT:$out#Build statements
build main.obj : cc main.cpp
build can2eu.obj : cc can2eu.cpp
build $TARGETNAME.pyd : link main.obj can2eu.obj
default $TARGETNAME.pyd
1.Variables(变量)
就是为一个字符串声明一个短一点的名字,可以重复利用,通过名字前面加$访问,
我写这个文件里,声明了一些链接编译用的选项,路径,库文件等产量,可使build可读性好点,也清晰。
2.Rules (规则)
规则就是命令行命令的简称,建立一个规则步骤,就是rule关键字开头,后加规则名称,另起一行缩进,用command定义执行的命令。$in代表命令输入的文件,$out代表输出文件。举个例子:
rule cccommand=cl.exe $CXXFLAGS $INCPATH /c $in /Fo$out
声明一个规则cc,它执行的命令是用cl工具把用CXXFLAGS的编译选项,INCPATH的头文件路径把输入文件编译成输出文件,但不链接。
3.Build statements就是声明输入和输出文件的关系,举个栗子:
build main.obj : cc main.cpp
就是用cc这个rule把输入文件main. cpp只编译不链接生成输出文件main.obj。
最后一行意思是默认目标就是生成pyCAN2EU. pyd这个python扩展。命令行运行ninja,即可生成所需python扩展。
我只是用了ninja的最基本功能,具体使用可查看手册ninja手册