针对单一工程排除文件
针对单一工程排除文件,这种方式会让这个工程的所有修改者在克隆代码的同时,也能克隆到过滤规则,而不用自己再写一份,这就能保证所有修改者应用的都是同一份规则。在工程根目录下建立.gitignore文件,将要排除的文件或目录写到.gitignore这个文件中,有两种写入方法:
① 使用命令行增加排除文件
例如排除以.class结尾的文件
bash
echo "*.class" > .gitignore
例如排除bin目录下的所有文件
bash
echo "bin/*" > .gitignore
注意,如果需要排除多级目录下的文件,比如bin/classes/A.class
那么.gitignore中的内容应该
继续阅读 »
记录下来是因为当时谷歌这个问题时发现,网上也有很多人遇到这个问题,我也因为这个问题导致了一个bug,所以告诫自己以后使用API多仔细看看文档。
python的tempfile模块用于创建系统临时文件,是一个很有用的模块。通过tempfile.NamedTemporaryFile,可以轻易的创建临时文件,并返回一个文件对象,文件名可以通过对象的name属性获取,且创建的临时文件会在关闭后自动删除。下面这段python代码创建一个临时文件,并再次打开该临时文件,写入数据,然后再次打开,读取文件,并按行打印文件内容。
继续阅读 »
为了进一步提升构建效率,减少没必要的重建,xmake新增了对头文件的依赖检测,以及自动构建仅仅需要重新编译的源文件,提升编译速度,并且完全支持windows、linux、macosx等大部分平台。。
由于检测过程本身也会有一些性能损耗,因此xmake对此进行了深度优化,实现极速依赖检测:
对依赖头文件进行过滤,如果是系统头文件,非自身项目的第三方头文件,自动忽略,这些头文件基本上不会再开发项目的时候,经常变动,所以没必要去每次检测他们,如果真有变动,手动重建下就行了
针对每个头文件的检测结果进行缓存,直接应用到下一个源文件上,减少重复检测的次数
其他一些细节优化
继续阅读 »
之前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
继续阅读 »
概念
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)、符号
继续阅读 »
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。
现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的,
如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分预编译头,就可以极大程度上减少频繁的头文件冗余编译。
但是不同编译器对它的支持力度和处理方式,还是有很大差异的,并不是非常通用,在xmake中封装成统一的接口和使用方式,还是费了很大的功夫才搞定。
msvc的预编译头处理
预编译头
继续阅读 »
工具
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
继续阅读 »
在Windows上,通过Cygwin编译的c程序在运行时,若有内存错误也会产生类似Linux上的core文件,但是该文件一般是以stackdump为后缀的文本文件,且文件提供的信息有限,只包含了程序coredump时函数调用的栈信息,不能像Linux一样使用gdb调试。所以,在Windows平台调试Cygwin编译的c程序不太方便。本文介绍一种方法,通过反汇编c程序,结合程序coredump时生成的stackdump文件,可以快速定位出程序的coredump位置。
继续阅读 »
content
{:toc}
本文将介绍如何使用 JavaScript 创建文件,并自动/手动将文件下载。这在导出原始数据时会比较方便。
先上代码
js
/**
* 创建并下载文件
* @param {String} fileName 文件名
* @param {String} content 文件内容
*/
function createAndDownloadFile(fileName, content) {
var aTag = document.createElement('a');
var blob = new Blob([content]);
aTag.download = fil
继续阅读 »
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
继续阅读 »