首页 > 代码库 > Vesions ignore & ld: library not found for -l...

Vesions ignore & ld: library not found for -l...

1.递归删除指定目录下的 .git、.svn 文件
find . -name .git | xargs rm -fr
find . -name .svn | xargs rm -rf
 

第一条倒还不常用,因为用 git 做版本管理的时候, 
只在根目录下生成一个 .git 目录,删掉这一个就行了~ 
因此,删除 .git 字需要 rm -rf .git 命令就够了。 

第二条才是真的,svn 做版本管理的时候,受管理的每个目录下面都会有一个 .svn 隐藏目录。 
因此,如果要去掉 svn 文件的话,则上面的第二条命令乃不二之选~ 

2.Versions for Mac 忽略文件设置 
一、打开配置文件 mvim ~/.subversion/config 
二、找到 global-ignores 一行,去掉注释,编辑成: 
global-ignores = build *~.nib *.so *.pbxuser *.mode(在此添加呢要忽略的文件后缀) 
三、找到 enable-auto-props = yes 把注释去掉 
(让立即生效?这条没有试过,当时按第二条改了以后发现还是没有反应) 

3.ld: library not found for -lcurl 
XCode 里面有时候会报出如下的错误(今天我就遇到了一遭): 
clang: warning: argument unused during compilation: ‘-websockets‘
ld: library not found for -lcurl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
 
解决方案: 
第一时间点击 XCode 工程文件,在 Build Phases 中查看 “ Link binary With Libraries”  
如果不出所料,你应该能发现有一到数个的条目是用红色字体来显示的。 
什么意思?被工程引用的这些文件,其物理文件已经不处于之前所记录的地方了。 
怎么办?右键点击红色条目,选择 “Reveal in Project Navigator”, 
此时大抵能在左侧栏中定位到缺失文件所在的路径,接下来就好办了,找到缺失的文件,挪回它应该待的地方。 

4.ld: library not found for -lcurl 
现象:在编译工程时,有时会遇到类似“ ld: library not found for -l…” 的错误提示。 
原因:通常这是由于工程在编译时找不到需要的链接库而导致的。 
解决方法: 
一般可以通过如下的方法解决,在工程的 Target 中选中要执行编译的某个target, 
然后 “get info”,打开 Build 设置页面,在 “ Library Search Path” 中添加缺失链接库的所在文件夹的路径即可。 

5.安装 Versions for Mac 以后,全局忽略的列表中默认是包含 *.a 文件类型的, 
这样可能会导致一些问题,就拿 cocosd-x 库来说吧, 
cocos2d-x 创建的模板工程中就包含着三个 .a 类型的文件: libcurl.a、 libwebp.a、 libwebsockets.a。 
如果用 Versions 来做版本管理的话,这些 .a 文件就可能被跳过。 
当其他人从 svn 服务器 checkout 该工程进行编译的时候,就可能会出现上一点中所描述的情形。 

6.svn 默认 ignore(忽略)一些文件,例如 “*.o”,怎么取消这种默认忽略让文件能正常提交呢? 
切换到指定目录,使用 “ svn add * --force --no-ignore” 命令即可。 
其中,“ --no-ignore” 是取消忽略,“ * --force” 是添加当前目录及所有子目录下的所有文件。 

7.受版本控制的工程,对其做粘贴目录的操作须谨慎! 
如果粘贴进去的某个目录中也包含了 .svn 隐藏目录,就可能会导致目标工程的版本控制出错, 
直观的表现就是某目录下明明存在一些文件,但在 Versions 中却看不到,日常的 svn 操作也可能会受到一定的影响。

怎么解决这个问题?在控制台下切换到出问题的目录,使用 “find . -name .svn | xargs rm -rf” 命令即可。