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.alibwebp.alibwebsockets.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” 命令即可。


原文轉之:http://my.oschina.net/gexun/blog/317325


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章