背景
用VS Code編譯一個C語言編寫的專案檔案,這個專案除main檔案外還有些被引用的C檔案,如果不做相關配置的話,執行會報錯:
即編譯時找不到被引用的這些檔案,從而報錯。
解決辦法
我是使用code-runner這個外掛跑的,所以這裡只寫關於用這種方式執行程式碼的解決辦法。
首先檢視.vscode/ 配置資料夾下是否有settings.json
;
如果有則看是否有配置物件叫做code-runner.executorMap
(code-runner.executorMap用於配置不同程式語言的執行命令);
如果有則在其中新增一條設定:
"c": "cd $dir && g++ -o $fileNameWithoutExt *.c && $dir$fileNameWithoutExt"
這條命令的含義如下:
cd $dir
: 切換到當前檔案所在的目錄。其中$dir是表示當前檔案所在的目錄路徑的變數g++ -o $fileNameWithoutExt *.c
:
g++
表示使用g++編譯器進行編譯。
-o $fileNameWithoutExt
表示指定輸出檔案的名稱為當前檔名。例如,如果當前檔案是main.c,則輸出檔名為main。
*.c
表示編譯當前目錄下所有的 C 原始檔。(這個是關鍵,之前會存在找不到引用的一個問題就是其他檔案沒有被編譯)$dir$fileNameWithoutExt
:
執行生成的可執行檔案。$dir
表示檔案所在目錄,$fileNameWithoutExt
是不包含副檔名的檔名。
配置儲存後,再執行則沒有未定義引用的報錯了。
如果沒有settings.json
檔案或者code-runner.executorMap
欄位,可以這樣:
在外掛欄裡,找到code-runner,點選齒輪,進入設定頁面:
找到這一段,點選
如果之前沒有settings.json
檔案的話這時會生成,並自動新增code-runner.executorMap
欄位,然後如上文所述新增命令即可。
參考
- https://blog.csdn.net/weixin_43870522/article/details/105736474
- https://blog.csdn.net/PegasiTIO/article/details/89225352