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
和適當的副檔名作為字尾來形成。生成庫是根據第二個引數(static
或shared
)和作業系統確定的。
生成的靜態庫在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...