CMakeList1 將原始檔編譯成可執行檔案

2021-10-24 11:26:40 字數 1377 閱讀 2976

1.cmake版本要求,可以用cmake -version檢視當前系統的cmake版本

cmake_minimum_required (version 3.5)
2.指示工程名稱

project(recipe-01)
3.編譯鏈結生成可執行檔案

add_executable(helloworld main.cpp)
1.add_library將指定的源**編譯到庫中

add_library(message

static

message.hpp

message.cpp

)

生成必要的構建指令,將指定的原始碼編譯到庫中。add_library的第乙個引數是目標名。整個cmakelists.txt中,可使用相同的名稱來引用庫。生成的庫的實際名稱將由cmake通過在前面新增字首lib和適當的副檔名作為字尾來形成。生成庫是根據第二個引數(staticshared)和作業系統確定的。

生成的靜態庫在windows系統下:message.lib,linux系統:message.a

2.target_link_libraries將庫鏈結到可執行檔案

target_link_libraries(hello-world message)
此命令還確保hello-world可執行檔案可以正確地依賴於訊息庫。因此,在訊息庫鏈結到hello-world可執行檔案之前,需要完成訊息庫的構建。

add_library第二次引數一共有四個選擇:

shared:用於建立動態庫,即可以動態鏈結,並在執行時載入的庫。可以在cmakelists.txt中使用`add_library(message shared

message.hpp message.cpp) `從靜態庫切換到動態共享物件(dso)。

object:可將給定add_library的列表中的原始碼編譯到目標檔案,不將它們歸檔到靜態庫中,也不能將它們鏈結到共享物件中。如果需要一次性建立靜態庫和動態庫,那麼使用物件庫尤其有用。我們將在本示例中演示。

module:又為dso組。與shared庫不同,它們不鏈結到專案中的任何目標,不過可以進行動態載入。該引數可以用於構建執行時外掛程式。

實驗1 原始檔(g cpp test cpp

實驗一 設計文法的資料結構 g.cpp,檔案中設計了文法的資料結構 include include typedef struct snodesnode typedef struct ode ode class g void insert into vn char newc else void ins...

多個原始檔進行編譯,即 makefile 的編寫

makefile的好處是防止原始檔的重複編譯 比如有好多個原始檔,某天對其中乙個原始檔進行修改,如果不寫makefile的話,需要將整個工程的所有檔案重新編譯一遍,非常麻煩,有了makefile,說明了每個原始檔的依附關係,當某個原始檔改變的時候只需重新編譯一下關聯的原始檔就好。例如 有以下檔案 o...

python 將資源檔案打包進exe

1 修改 中資源路徑def resource path filaename if hasattr sys,meipass return os.path.join sys.meipass,filaename return os.path.join filaename 呼叫資源檔案路徑如下 respat...