前言
當我們有時候想要在 C++ 使用第三方套件的時候,我們需要下 -I (大寫的 i),
來幫助我們使用套件,
因為我是從 Python 學習過來的,
所以一開始的時候,對這一點非常的不習慣,
在 Python 的習慣的流程是先作類似 pip install 後,直接 import package 即可。(這邊講的是通常,並非全部)
而 C++ 在這部份並不相同。
這裡我們以我經常使用的 C++ OpenCV 與 C++ Tensorflow 為例子
C++ OpenCV
mac 安裝 OpenCV
- mac 安裝 OpenCV,需要在終端機輸入以下指令
brew install opencv
C++ Tensorflow
step 1. git clone – 把 tensorflow 的 Library 下載下來
git clone https://github.com/tensorflow/tensorflow
step 2. 連同剛剛 git clone 的 repo,建立資料夾結構如下
因為檔案非常的多,這邊只舉部分的檔案作為例子
- tensorflow
- tensorflow
- c
- lite
…
- third_party
…
- tensorflow
- test_tensor_flow.cpp (我們測試用的檔案)
step 3. 寫一些測試用的程式,以下舉個範例
#include <iostream>
#include "tensorflow/lite/core/c/common.h"
int main() {
TfLiteTensor* tensor = nullptr;
return 0;
}
step 4. compile cpp 檔案,使用 Tensorflow library,下 -I tensorflow (大寫的 i)
g++ test_simple_tensor.cpp -I tensorflow # uppercase i
其他的一些延伸問題
- 比照上述路徑的方式不對
'tensorflow/lite/c/common.h' file not found
- 需要使用 -I 的方式,IWYU 代表的是 include what you use 的縮寫,
總之 include 方式錯誤,需要研究 -I 的方式怎麼用
#include "tensorflow/lite/core/c/c_api_types.h" // IWYU pragma: export