2015-05-14 Eric Wang
Git
针对单一工程排除文件 针对单一工程排除文件,这种方式会让这个工程的所有修改者在克隆代码的同时,也能克隆到过滤规则,而不用自己再写一份,这就能保证所有修改者应用的都是同一份规则。在工程根目录下建立.gitignore文件,将要排除的文件或目录写到.gitignore这个文件中,有两种写入方法: ① 使用命令行增加排除文件 例如排除以.class结尾的文件 bash echo "*.class" > .gitignore 例如排除bin目录下的所有文件 bash echo "bin/*" > .gitignore 注意,如果需要排除多级目录下的文件,比如bin/classes/A.class 那么.gitignore中的内容应该 继续阅读 »
2018-02-06 LEo
记录下来是因为当时谷歌这个问题时发现,网上也有很多人遇到这个问题,我也因为这个问题导致了一个bug,所以告诫自己以后使用API多仔细看看文档。 python的tempfile模块用于创建系统临时文件,是一个很有用的模块。通过tempfile.NamedTemporaryFile,可以轻易的创建临时文件,并返回一个文件对象,文件名可以通过对象的name属性获取,且创建的临时文件会在关闭后自动删除。下面这段python代码创建一个临时文件,并再次打开该临时文件,写入数据,然后再次打开,读取文件,并按行打印文件内容。 继续阅读 »
2016-07-12 ruki
为了进一步提升构建效率,减少没必要的重建,xmake新增了对头文件的依赖检测,以及自动构建仅仅需要重新编译的源文件,提升编译速度,并且完全支持windows、linux、macosx等大部分平台。。 由于检测过程本身也会有一些性能损耗,因此xmake对此进行了深度优化,实现极速依赖检测: 对依赖头文件进行过滤,如果是系统头文件,非自身项目的第三方头文件,自动忽略,这些头文件基本上不会再开发项目的时候,经常变动,所以没必要去每次检测他们,如果真有变动,手动重建下就行了 针对每个头文件的检测结果进行缓存,直接应用到下一个源文件上,减少重复检测的次数 其他一些细节优化 继续阅读 »
2016-07-24 ruki
之前xmake默认编译windows目标,debug模式下采用的是-Z7编译选项,内置的调试符号信息到obj文件里面 但是这种方式按msdn的文档上说,是属于旧式的调试符号文件格式,所以为了考虑后续的兼容性,xmake修改了默认的调试符号生成规则, 改为默认启用pdb符号文件,并且pdb的方式更为常用。。 这个行为的修改,并不会影响到xmake.lua的设置,如果在这个文件中,设置了启用调试符号: lua set_symbols("debug") 那么,编译debug版本的目标时,就会自动生成pdb文件,以tbox为例: bash $ xmake f -m debug $ xmake 编译完成后,会自动在build 继续阅读 »
2017-07-03 Xie Jingyi
概念 Linux 中的每一个文件都有其 所属用户 及 所属用户组,根据这两个属性可将文件访问者分为三类:所属用户自己、所属用户组中的用户 和 其他用户,我们可以针对不同的访问者设置不同的用户权限。 “访问”可分为三类:读、写 与 执行。我们可以用 ls -l 命令查看一个文件的权限: bash $ touch test $ ls -l test -rw-rw-r-- 1 hsfzxjy hsfzxjy 0 Jul 3 23:44 test 首部的 -rw-rw-r-- 即为文件的权限位。权限应该分为四部分来看:-/rw-/rw-/r--。第一部分标志文件的类型,如 普通文件(-)、目录(d)、UNIX 套接字(s)、符号 继续阅读 »
2017-07-31 ruki
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。 现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分预编译头,就可以极大程度上减少频繁的头文件冗余编译。 但是不同编译器对它的支持力度和处理方式,还是有很大差异的,并不是非常通用,在xmake中封装成统一的接口和使用方式,还是费了很大的功夫才搞定。 msvc的预编译头处理 预编译头 继续阅读 »
2016-04-28 zzyhappyzzy
mac
工具 terminal(终端) 显示mac电脑所有隐藏文件 defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏mac电脑所有隐藏文件 defaults write com.apple.finder AppleShowAllFiles -bool false 主动隐藏某个文件(filename为想隐藏的文件的绝对路径名) chflags hidden filename 主动取消某个文件的隐藏(filename为想隐藏的文件的绝对路径名) chflags nohidden filename 继续阅读 »
2016-08-30 Jamling
git
在提交代码时,有许多的初学者甚至是老程序员也会犯一个错误,那就是把一些不应该提交到源代码仓库的文件也提交到仓库,比如编译后的输出bin/目录,本地工程的一些设置文件如.idea,.settings。如果一旦提交到远程仓库,那么还将影响到团队中的其他成员。每次更新的时候,都会将别人的设置更新下来,可能会导致编译不通过等诸多问题。一旦这些文件受git管控,那么想删掉它就麻烦了。如果本地删除,再commit和push,那么其他成员更新代码的时候,他本地的也会被删除。对于编译输出的文件还好,再编译一次就可以。如果是环境设置类的文件,那么对方就惨了。会导致许多莫名的错误。 继续阅读 »
2016-08-29 ruki
xmake master上最新版本已经支持vs2002-vs2015工程文件的生成,通过project插件的方式提供,例如: 创建vs2013工程文件: bash $ xmake project -k vs2013 默认输出目录是在当前工程的下面,会生成一个vs2008的工程文件夹,打开解决方案编译后,默认的输出文件路径跟xmake.lua描述的是完全一致的,一般都是在build目录下 除非你手动指定其他的构建目录,例如:xmake f -o /tmp/build 创建vs2008工程文件,并且创建工程文件到指定目录: bash $ xmake project -k vs2008 f:\vsproject 继续阅读 »
2016-12-29 LEo
在Windows上,通过Cygwin编译的c程序在运行时,若有内存错误也会产生类似Linux上的core文件,但是该文件一般是以stackdump为后缀的文本文件,且文件提供的信息有限,只包含了程序coredump时函数调用的栈信息,不能像Linux一样使用gdb调试。所以,在Windows平台调试Cygwin编译的c程序不太方便。本文介绍一种方法,通过反汇编c程序,结合程序coredump时生成的stackdump文件,可以快速定位出程序的coredump位置。 继续阅读 »