cmake入門2子目錄

2021-10-13 17:38:20 字數 1823 閱讀 2748

目錄環境

背景方式一:源**

方式二:庫

ubuntu18

cmake version 3.17.3

把工具類放到單獨的資料夾下,以便結構清晰。

比如現在有乙個utils的資料夾,下面放自己編寫好的工具類。

目錄結果如下:

cmakelists.txt**

cmake_minimum_required(version 3.10)

project(ylk_demo)

#需要把用到的**都新增進來

add_executable(main main.c utils/dateutils.c)

main.c**:使用了dateutils.c中的shownow()方法顯示當前時間

#include "utils/dateutils.h"

int main()

dateutils.h**

#ifndef demo_dateutils_h

#define demo_dateutils_h

//顯示當前時間

上面通過 add_executable(main main.c utils/dateutils.c) 的方式 使用類,適用方直接感知到了具體的檔名,耦合度高,而且檔案多了也不方便。

下面通過使用共享庫的方式解決這個耦合問題。

複製demo3到demo4資料夾。目錄結構和c的**都不用變,修改配置檔案。

1、在utils下新建cmakelists.txt

add_library:表示新增庫、dateutils是庫的名字。cmake在生成的時候會根據命名規範生成 libdateutils.a或libdateutils.so

static: 表示生成靜態庫,所以這裡最終的名字是 libdateutils.a

add_library(dateutil static dateutils.c dateutils.h)
2、修改根目錄下的cmakelists.txt

cmake_minimum_required(version 3.10)

project(ylk_demo)

add_executable(main main.c)

#下面的是新加的

#表示main使用到了 dateutil這個庫

target_link_libraries(main dateutil)

#把utils新增到工程源**中

3、執行檢視結果

這樣子我們就通過庫的名字,把上面說的耦合給解耦了。

又驗證了計算機界有個名言:計算機界任何問題都可以通過加乙個中間層來解決

python建立子目錄並在子目錄下建立檔案

import os 首先判斷當前工作目錄下是否存在目錄machine learning ifnot os.path.isdir machine learning 不存在的話就建立子目錄machine learning 因為父目錄存在,所有這裡用mkdir也可以 os.makedirs machine...

iview admin nginx 部署子目錄

1 修改專案下的 vue.config.js 部署環境改為子目錄的名稱 2 nginx配置 這裡使用alias 不能用root server 3 alias和root的區別 實際util.js 檔案是在dist js 目錄下,這樣會訪問不到資源 4 前後端分離,正式環境nginx配置 設定正式環境下...

合併子目錄 hash

題目2 合併子目錄 時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 小hi的電腦的檔案系統中一共有n個檔案,例如 hihocoder offer22 solutions p1 hihocoder challenge30 p1 test game moba dota2 uni...