激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C/C++ - C++獲取項目路徑的兩種方式詳解

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

2022-01-21 14:23Type真是太帥了 C/C++

這篇文章主要介紹了C++獲取項目路徑的兩種方式的相關(guān)資料,需要的朋友可以參考下,希望能夠給你帶來幫助

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

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

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

${PROJECT_SOURCE_DIR}

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

?
1
set(MAIN_PATH ${PROJECT_SOURCE_DIR})

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

?
1
#define PROJECT_PATH "@MAIN_PATH@"

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

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

編譯完成后即可生成對應(yīng)的xxx.h:

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

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

二、從環(huán)境變量讀取:適合腳本場景

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

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

?
1
export resource_path=${PWD}

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

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

?
1
char *path = getenv("resource_path");

不存在則為空。

組合實例代碼:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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é)

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

原文鏈接:https://blog.csdn.net/qq_36614557/article/details/120713808

延伸 · 閱讀

精彩推薦
  • C/C++c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    c++ 單線程實現(xiàn)同時監(jiān)聽多個端口

    這篇文章主要介紹了c++ 單線程實現(xiàn)同時監(jiān)聽多個端口的方法,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現(xiàn)電腦關(guān)機(jī)程序

    C語言實現(xiàn)電腦關(guān)機(jī)程序

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)電腦關(guān)機(jī)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學(xué)習(xí)C++編程的必備軟件

    學(xué)習(xí)C++編程的必備軟件

    本文給大家分享的是作者在學(xué)習(xí)使用C++進(jìn)行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經(jīng)典實例之模擬計算器示例代碼

    C/C++經(jīng)典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關(guān)于C/C++經(jīng)典實例之模擬計算器的相關(guān)資料,文中通過示...

    jia150610152021-06-07
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    詳解c語言中的 strcpy和strncpy字符串函數(shù)使用

    strcpy 和strcnpy函數(shù)是字符串復(fù)制函數(shù)。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數(shù)使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++深入理解goto語句的替代實現(xiàn)方式分析

    深入理解goto語句的替代實現(xiàn)方式分析

    本篇文章是對goto語句的替代實現(xiàn)方式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下...

    C語言教程網(wǎng)7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內(nèi)存中的數(shù)據(jù)都是暫時的,當(dāng)程序結(jié)束時,它們都將丟失,為了永久性的保存大量的數(shù)據(jù),C語言提供了對文件的操作,這篇文章主要給大家介紹了關(guān)于C語言中文件...

    針眼_6702022-01-24
主站蜘蛛池模板: 午夜免费一区 | 精品一区二区在线播放 | 99re66热这里只有精品8 | 黄www片| 亚州视频在线 | 在线播放亚洲精品 | 久久精品亚洲欧美日韩精品中文字幕 | 亚洲无av | 日本欧美中文字幕 | 真人一级毛片免费 | 色综合视频| 欧美18xxxx | 亚洲综合无码一区二区 | 欧美一区二区黄色 | 成人久久精品 | 毛片视频免费观看 | 大学生a级毛片免费视频 | 91在线色| 日韩色视频| 欧美激情性色生活片在线观看 | 最新日韩精品在线观看 | 狠狠操夜夜爱 | 成人午夜在线播放 | 国产亚洲高清视频 | 欧美一区二区三区免费观看 | 欧美乱码精品一区 | 永久免费不卡在线观看黄网站 | 一本色道久久综合狠狠躁篇适合什么人看 | 欧美日韩亚洲不卡 | 久久久免费 | 日本在线视 | 九九色精品 | 欧美性受xxxx白人性爽 | 中文字幕一区在线观看视频 | 国产免费中文字幕 | 黄色羞羞视频在线观看 | 龙的两根好大拔不出去h | 成人毛片一区 | 国内久久久久 | 96视频在线免费观看 | 国产一区二区视频在线播放 |