在使用 Code Composer Studio (CCS) 開發 DSP 或 ARM 工程時,經常會遇到這樣一個問題:
在 A 電腦上能正常編譯的工程,拷貝到 B 電腦上后就報錯。
錯誤的原因通常是 工程使用了絕對路徑,而不同電腦上的文件路徑不一致,比如:
這樣,每次換電腦或者更換目錄,就得重新修改路徑,非常麻煩。
解決辦法就是——統一使用相對路徑。
1. 常見的路徑宏
CCS 提供了以下常用宏,可以幫助你寫相對路徑:
${workspace_loc}?:
當前 CCS 工作區(workspace)路徑。
依賴工作區 (Workspace):它的前提是工程必須在某個 CCS Workspace 下,才能通過${ProjName} 解析出工程路徑。
適用場景:如果你有多個工程放在同一個 Workspace,并且它們之間需要共享一些公共的 include/lib,可以用這種寫法。
${ProjName} :當前工程名稱路徑,更獨立,不依賴 Workspace 的路徑。
${PROJECT_ROOT} :當前工程的根目錄。
獨立于 Workspace:它直接指向工程自身所在目錄,不依賴 Workspace 的路徑。
可移植性最好:無論工程在哪個 Workspace 下,甚至把工程單獨 copy 給別人(別人 import 工程),這個路徑依然有效。
推薦用法:工程自己的?include/、lib/?目錄建議用這種寫法。
${CG_TOOL_ROOT} :當前工程使用的編譯器 (Code Generation Tools) 的安裝目錄。
?示例:
本地工程路徑
本地編譯器安裝路徑
${workspace_loc:/${ProjName}/include} ?
//表示D:\CCSWorkspace\ProjectTest\include
${PROJECT_ROOT}/include ? ? ? ? ? ? ? ?
//表示D:/CCSWorkspace/ProjectTest/include
${PROJECT_ROOT}/lib ? ? ? ? ? ? ? ? ? ?
//表示D:/CCSWorkspace/ProjectTest/lib
${CG_TOOL_ROOT}/include ? ? ? ? ? ? ? ?
//表示C:/Software/CCS1230/ccs/tools/compiler\ti-cgt-c2000_22.6.0.LTS/includ
${CG_TOOL_ROOT}/lib ? ? ? ? ? ? ? ? ? ?
//表示C:/Software/CCS1230/ccs/tools/compiler\ti-cgt-c2000_22.6.0.LTS/lib
2. 修改 include 路徑
2.1 右鍵工程 → Properties
2.2 進入?Build → Compiler → Include Options
2.3 在 Add dir to #include search path 中添加:
${PROJECT_ROOT}/include
${workspace_loc:/${ProjName}/include}
${CG_TOOL_ROOT}/include
這樣,頭文件搜索順序就是:
先找工程目錄下的 include
再找工作區路徑
最后找編譯器默認的 include
3. 修改 lib 路徑
3.1 右鍵工程 → Properties
3.2 進入Build?→
Linker →
File Search Path?
3.3 在 Add <dir> to library search path (--search_path, -i)?里添加:
${PROJECT_ROOT}/lib
${workspace_loc:/${ProjName}/lib}
${CG_TOOL_ROOT}/lib?
(注意:如果工程目錄下沒有lib文件,只需要添加${CG_TOOL_ROOT}/lib 即可)
4. 推薦的工程目錄結構
為了更方便使用相對路徑,可以在工程下保持統一的結構:
ProjectName/
│── include/???# 頭文件
│── lib/??????# 庫文件
│── source/????# 源代碼
│── linker.cmd??# 鏈接命令文件
│── .project???# CCS 工程文件
這樣只需寫:
${PROJECT_ROOT}/include
${PROJECT_ROOT}/lib
即可完成配置。
5. 總結
絕對路徑 → 只能在本機使用,不利于分享
相對路徑(推薦) → 通過?${PROJECT_ROOT}、${workspace_loc} 等宏來配置
lib / include 建議放在工程目錄內,統一管理,減少依賴
這樣設置后,你的 CCS 工程就可以在任何電腦上直接編譯,無需修改路徑配置,大大提升了可移植性和可維護性。