Windows機器下VSCode安裝及使用CmakeLists編譯工程demo


使用VSCode, Mingw and Cmake寫工程代碼,從零開始寫的那種,全過程分享......

你若發現該帖中有待商榷的地方,還請指正賜教,先行拜謝了!

1 軟件下載

1.1 vscode下載

官網下載地址: https://code.visualstudio.com/

下載時,根據自己機器配置選擇64位或32位(目前大多數機器windows機器都是64位),下載到本地之后如下圖所示:

 

1.2 cmake下載

官網下載地址: https://cmake.org/download/

1.3 mingw下載

官網下載地址:https://osdn.net/projects/mingw/releases/

2 軟件安裝

2.1 VSCode安裝

雙擊.exe文件開始安裝,根據自己實際情況修改安裝目錄,其他全部默認點擊“下一步”即可

安裝完成之后打開vscode

2.2 添加cmake環境變量

(1)此電腦右擊,點擊屬性

(2)點擊高級系統設置

(3)點擊高級 --> 環境變量

(4)選擇Path,點擊編輯

(5)將下載解壓后的cmake bin目錄路徑粘貼進去,然后一路點擊確定關閉彈窗即可

2.3 添加mingw環境變量

找到mingw的bin目錄復制,添加方法參考 2.2 添加cmake環境變量

2.4 所有軟件安裝ok之后,重啟一下電腦(不知道什么原因,沒重啟之前,配置cmake一直失敗,重啟后解決

在cmd窗口中敲 gcc --version和cmake --version命令行,有版本號回顯說明安裝歐ok

3 建工程demo

3.1 創建工程

按照以下文件,建立一個空的工程demo,里面啥也不用寫

 

------------------------------------------------------------------------------------------------------------------------------------------------

3.2 用VSCode打開

打開后如下圖所示

完成c碼編寫......

3.3 CmakeLists.txt編碼

多級目錄的CmakeLists.txt編寫,代碼層級關系如下:

(1)頂層CmakLists.txt

 1 #指定cmake最低版本號
 2 cmake_minimum_required(VERSION 3.0)
 3 
 4 #指定項目名稱
 5 project(CmakeProjDemo)
 6 
 7 #指定可執行文件的輸出路徑位bin目錄
 8 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
 9 
10 #指定子目錄
11 add_subdirectory(src)
12 #-----------------------以上是頂層目錄的必需品-----------------
13 
14 
15 #main.c中#include "Pub.h" & #include "Calculator.h",需要指定include目錄
16 include_directories(${CMAKE_SOURCE_DIR}/include) #沒有這一行肯定報錯找不到Pub.h & Calculator.h
17 
18 #指定源文件編譯成CmakeProjDemo
19 add_executable(CmakeProjDemo main.c)
20 
21 #編譯可執行文件時,main.c需要指定他的動態鏈接目錄
22 target_link_libraries(CmakeProjDemo src) #放在add_executable(CmakeProjDemo main.c)之前為啥不行?

(2)./src/CmakLists.txt

 1 #該目錄記為module_src
 2 set(module_src src)
 3 
 4 #當前目錄下所有的源文件賦給source_src
 5 aux_source_directory(. source_src)
 6 
 7 #指定src目錄下源文件 #include "Pub.h" & #include "Calculator.h"
 8 include_directories(${CMAKE_SOURCE_DIR}/include) #沒有這一行肯定報錯找不到Pub.h & Calculator.h
 9 
10 #編譯靜態庫
11 add_library(${module_src} ${source_src})

4 編譯/運行

4.1 配置cmake

在VSCode中按F1 --> 窗口中輸入cmake config --> 點擊CMake Configure

4.2 編譯

在VSCode中按F1 --> 窗口中輸入cmake build --> 點擊CMake Build

4.3 run

菜單欄 --> 終端 --> 新建終端 --> 在終端中cd 到bin目錄 --> ./CmakeProjDemo.exe

5 源碼附錄

5.1 頂層目錄:CmakeLists.txt main.c

 

 1 #/* 頂層CmakeLists.txt */
 2 #指定cmake最低版本號
 3 cmake_minimum_required(VERSION 3.0)
 4 
 5 #指定項目名稱
 6 project(CmakeProjDemo)
 7 
 8 #指定可執行文件的輸出路徑位bin目錄
 9 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)
10 
11 #指定子目錄
12 add_subdirectory(src)
13 #-----------------------以上是頂層目錄的必需品-----------------
14 
15 
16 #main.c中#include "Pub.h" & #include "Calculator.h",需要指定include目錄
17 include_directories(${CMAKE_SOURCE_DIR}/include) #沒有這一行肯定報錯找不到Pub.h & Calculator.h
18 
19 #指定源文件編譯成CmakeProjDemo
20 add_executable(CmakeProjDemo main.c)
21 
22 #編譯可執行文件時,main.c需要指定他的動態鏈接目錄
23 target_link_libraries(CmakeProjDemo src) #放在add_executable(CmakeProjDemo main.c)之前為啥不行?

 

 1 /* main.c */
 2 #include <stdio.h>
 3 
 4 #include "Pub.h"
 5 #include "Calculator.h"
 6 
 7 int main()
 8 {
 9     printf("Hello CMAKE_PROJ_DEMO.\n");
10 
11     int num1 = 100;
12     int num2 = 10;
13 
14     int ret = Add(num1, num2);
15     printf("Add result(%d, %d) = %d\n", num1, num2, ret);
16     printf("Subtract result(%d, %d) = %d\n", num1, num2, Subtract(num1, num2));
17     printf("Multiply result(%d, %d) = %d\n", num1, num2, Multiply(num1, num2));
18     printf("Divede result(%d, %d) = %d\n", num1, num2, Divide(num1, num2));
19 
20     (void)Swap(&num1, &num2);
21     printf("Swap result(%d, %d)\n", num1, num2);
22 
23     return 0;
24 }

 

5.2 src目錄:CmakeLists.txt Pub.c Calculator.c

 1 #/* src目錄CmakeLists.txt */
 2 #該目錄記為module_src
 3 set(module_src src)
 4 
 5 #當前目錄下所有的源文件賦給source_src
 6 aux_source_directory(. source_src)
 7 
 8 #指定src目錄下源文件 #include "Pub.h" & #include "Calculator.h"
 9 include_directories(${CMAKE_SOURCE_DIR}/include) #沒有這一行肯定報錯找不到Pub.h & Calculator.h
10 
11 #編譯動態庫
12 add_library(${module_src} ${source_src})

 

 1 /* Pub.c */
 2 #include "Pub.h"
 3 
 4 int Cmp(const void *num1, const void *num2)
 5 {
 6     return *(int *)num1 - *(int *)num2;
 7 }
 8 
 9 int Swap(int *const num1, int *const num2)
10 {
11     int tmp = *num2;
12     *num2 = *num1;
13     *num1 = tmp;
14 
15     return 0;
16 }

 

 1 /* Calculator.c */
 2 #include "Calculator.h"
 3 
 4 #include <stdio.h>
 5 
 6 int Add(const int num1, const int num2)
 7 {
 8     return num1 + num2;
 9 }
10 
11 int Subtract(const int num1, const int num2)
12 {
13     return num1 - num2;
14 }
15 
16 int Multiply(const int num1, const int num2)
17 {
18     return num1 * num2;
19 }
20 
21 int Divide(const int num1, const int num2)
22 {
23     return num1 / num2;
24 }

 

5.3 include目錄:Pub.h Calculator.h

1 /* Pub.h */
2 #ifndef PUB_H
3 #define PUB_H
4 
5 int Cmp(const void *num1, const void *num2);
6 int Swap(int *const num1, int *const num2);
7 
8 #endif /* PUB_H */
 1 /* Calculator.h */
 2 #ifndef CALCULATOR_H
 3 #define CALCULATOR_H
 4 
 5 int Add(const int num1, const int num2);
 6 int Subtract(const int num1, const int num2);
 7 int Multiply(const int num1, const int num2);
 8 int Divide(const int num1, const int num2);
 9 
10 #endif /* CALCULATOR_H */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM