I want to set Protobuf_INCLUDE_DIRS
to a directory of my choosing, however, I am not sure how to do that.
$ locate FindProtobuf.cmake
/usr/share/cmake-3.16/Modules/FindProtobuf.cmake
I can see that in FindProtobuf.cmake
, we have these:
if(Protobuf_FOUND)
set(Protobuf_INCLUDE_DIRS ${Protobuf_INCLUDE_DIR})
endif()
I want it to be set to the second option here:
$ which -a protoc
/home/mona/anaconda3/bin/protoc
/usr/local/bin/protoc
However, it is set to the first option /home/mona/anaconda3/bin/protoc
despite forcing it in ~/.bashrc to second option: /usr/local/bin/protoc
using below command: alias protoc=/usr/local/bin/protoc
The version that my program requires is 3.6.1 and alias protoc=/usr/local/bin/protoc assures that. However, ProtobufCMake forces the path to be /home/mona/anaconda3/bin/protoc
and that version is 3.13.0.
A bit about the problem I am facing. I am using openpose and for installing it in Ubuntu 20.04, I am using CMake. It requires the protobuf version to be 3.6.1.
More on here https://github.com/CMU-Perceptual-Computing-Lab/openpose/issues/1817
Here are the messages:
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:469 (file):
file STRINGS file "/usr/include/google/protobuf/stubs/common.h" cannot be
read.
Call Stack (most recent call first):
CMakeLists.txt:429 (find_package)
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:475 (math):
math cannot parse the expression: " / 1000000": syntax error, unexpected
exp_DIVIDE (2).
Call Stack (most recent call first):
CMakeLists.txt:429 (find_package)
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:476 (math):
math cannot parse the expression: " / 1000 % 1000": syntax error,
unexpected exp_DIVIDE (2).
Call Stack (most recent call first):
CMakeLists.txt:429 (find_package)
CMake Error at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:477 (math):
math cannot parse the expression: " % 1000": syntax error, unexpected
exp_MOD (2).
Call Stack (most recent call first):
CMakeLists.txt:429 (find_package)
CMake Warning at /usr/share/cmake-3.16/Modules/FindProtobuf.cmake:499 (message):
Protobuf compiler version 3.13.0 doesn't match library version
ERROR.ERROR.ERROR
Call Stack (most recent call first):
CMakeLists.txt:429 (find_package)
Not sure how exactly do what I wanted to do above, but a hack to get CMake work for OpenPose is using Python venv and comment the anaconda python activation lines in ~/.bashrc:
Now, cmake-gui ..
throws no error:
GCC detected, adding compile flags
GCC detected, adding compile flags
Building with CUDA.
CUDA detected: 10.1
Added CUDA NVCC flags for: sm_75
cuDNN not found
Found gflags (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/libgflags.so)
Found glog (include: /usr/include, library: /usr/lib/x86_64-linux-gnu/libglog.so)
Caffe will be downloaded from source now. NOTE: This process might take several minutes depending
on your internet connection.
Caffe has already been downloaded.
HEAD is now at 1807aada Added Ampere arch's (CUDA11)
Caffe will be built from source now.
Download the models.
Downloading BODY_25 model...
Model already exists.
Not downloading body (COCO) model
Not downloading body (MPI) model
Downloading face model...
Model already exists.
Downloading hand model...
Model already exists.
Models Downloaded.
Configuring done
I have this in ~/.bashrc:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
##__conda_setup="$('/home/mona/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
##if [ $? -eq 0 ]; then
## eval "$__conda_setup"
##else
## if [ -f "/home/mona/anaconda3/etc/profile.d/conda.sh" ]; then
## . "/home/mona/anaconda3/etc/profile.d/conda.sh"
## else
## export PATH="/home/mona/anaconda3/bin:$PATH"
## fi
##fi
and installed the following in Ubuntu 20.04:
$ sudo apt-get install python3
$ sudo apt-get install python3-venv
also, do this in ~/.bashrc and source it: alias python=python3
$ python -m venv ~/venv/openpose
$ source ~/venv/openpose/bin/activate