最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++獲取項目路徑的兩種方式詳解

 更新時間:2021年10月12日 10:20:52   作者:Type真是太帥了  
這篇文章主要介紹了C++獲取項目路徑的兩種方式的相關資料,需要的朋友可以參考下,希望能夠給你帶來幫助

在某些特定的條件運行時不能使用局部地址,例如ci流程等,這就要求讀取文件時必需使用全局地址,但是在項目路徑不定的情況下很難知道某個文件的全局地址,目前存在兩種獲取項目路徑的方式,其中一種更適用于ci流程。

一、Cmake傳參:適用于簡單場景

在Cmake中,很容易知道項目的地址,例如

${PROJECT_SOURCE_DIR}

可以在cmakelists中,將該值賦值給變量,例如MAIN_PATH:

set(MAIN_PATH ${PROJECT_SOURCE_DIR})

然后新建xxx.h.in文件,僅需一行即可利用宏捕獲MAIN_PATH:

#define PROJECT_PATH "@MAIN_PATH@"

在cmakelists中將xxx.h.in編譯成xxx.h:

configure_file(src/param_deliver.h.in ../src/param_deliver.h)

編譯完成后即可生成對應的xxx.h:

#define PROJECT_PATH "/home/type/mcamera/mcamera"

然后調(diào)用該宏即可獲得項目地址。

二、從環(huán)境變量讀?。哼m合腳本場景

C++中自帶函數(shù)getenv,可以讀取指定的環(huán)境變量,返回char *。詳見std::getenv - cppreference.com。

因此,可以在bash中將當前項目地址設置為指定的環(huán)境變量,例如

export resource_path=${PWD}

注意,是${PWD}而不是${pwd}。

然后在c++代碼直接讀取即可:

char *path = getenv("resource_path");

不存在則為空。

組合實例代碼:

首先讀取環(huán)境變量,如果不存在則從Cmake里讀取:

std::string getResourcePath() {
    char *path = getenv("RESOURCE_DIR");
    if (path != nullptr) {
        LOG("find path in ENV:%s", path);
        return path;
    }
    // not find in ENV
    std::string project_path = PROJECT_PATH;
    std::string resource_path = project_path + "/test/resource/";
    LOG("find path in CMake:%s", resource_path.c_str());
    return resource_path;
}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!

相關文章

  • C語言構(gòu)建連連看游戲(矩陣方式)

    C語言構(gòu)建連連看游戲(矩陣方式)

    這篇文章主要為大家詳細介紹了C語言構(gòu)建連連看游戲,采用矩陣方式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 一篇文章帶你了解C++中的異常

    一篇文章帶你了解C++中的異常

    這篇文章主要為大家詳細介紹了C++中的異常,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • QT5?Thread線程的具體實現(xiàn)

    QT5?Thread線程的具體實現(xiàn)

    本文主要介紹了QT5?Thread線程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡

    C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單BP神經(jīng)網(wǎng)絡,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • ubuntu中打開終端的三種解決方法

    ubuntu中打開終端的三種解決方法

    本篇文章是對ubuntu中打開終端的三種方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言文件操作入門指南

    C語言文件操作入門指南

    我們在想既然是通訊錄就應該把信息記錄下來,只有我們自己選擇刪除數(shù)據(jù)的時候,數(shù)據(jù)才不復存在,這就涉及到了數(shù)據(jù)持久化的問題,我們一般數(shù)據(jù)持久化的方法有,把數(shù)據(jù)存放在磁盤文件、存放到數(shù)據(jù)庫等方式,使用文件我們可以將數(shù)據(jù)直接存放在電腦的硬盤上,做到了數(shù)據(jù)的持久化
    2024-08-08
  • C語言三子棋一步步實現(xiàn)詳程

    C語言三子棋一步步實現(xiàn)詳程

    三子棋是一種民間傳統(tǒng)游戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了,想用c語言做出這個游戲,事實上也是比較簡單的,下面通過c語言進行對五子棋的分析
    2022-02-02
  • 詳解C語言中的常量指針和指針常量

    詳解C語言中的常量指針和指針常量

    這篇文章主要介紹了詳解C語言中的常量指針和指針常量,包括其之間的區(qū)別是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • VisualStudio2022 cmake配置opencv開發(fā)環(huán)境

    VisualStudio2022 cmake配置opencv開發(fā)環(huán)境

    本文主要介紹了VisualStudio2022 cmake配置opencv開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • c++中new和delete操作符用法

    c++中new和delete操作符用法

    c++中new和delete運算符是用于動態(tài)分配和撤銷內(nèi)存的運算符,下面是示例,大家參考使用吧
    2014-04-04

最新評論

什邡市| 商都县| 晋宁县| 平远县| 托里县| 朔州市| 印江| 红桥区| 湟中县| 民乐县| 张北县| 皋兰县| 阿拉尔市| 清涧县| 旬邑县| 广河县| 竹溪县| 广宗县| 秦皇岛市| 焉耆| 湘阴县| 布尔津县| 潮安县| 曲沃县| 剑川县| 辉县市| 兴仁县| 长沙市| 博野县| 瑞昌市| 双流县| 关岭| 永修县| 洛扎县| 五大连池市| 施甸县| 桦川县| 韶山市| 石首市| 陆河县| 丹江口市|