vs2019 compiling opencv349 and extension library

 

0 environment

  • VS2019
  • CMAKE
  • cuda11.5
  • cudnn

Driving Google software on the plane for downloading dependency

1 download source code

https://github.com/opencv/opencv/releases/tag/3.4.9

 

 

 https://github.com/opencv/opencv_contrib/releases/tag/3.4.9

 

 

Download

 

 

 

2 compilation

Set path and build path

 

 

Click configure

 

 

Click finish

 

 

Wait for the end

 

 

There is an alarm in the middle. It is not an error. Ignore it

 

 

 

3 start configuration

3-1 add cuda

 

 

3-2 add an extension library note path/

 

 

3-3 add sifit corner Library

 

 

3-4 add the world library and compile it into one

 

 

3-5 select the compiled version

 

 

3-6 whether to compile the available version of python (selected by default, but not required)

 

 

 

Then click generate

Please note that if you drive Google on a plane to ensure that some required files are downloaded during this process, you can also download them manually according to the later error report records.

 

 

 

 

 

Problem 1: the library is missing and needs to be downloaded manually

These are not downloaded automatically during the configuration process. You need to download them manually from the website

Find out what hasn't been downloaded from the download record, download it manually and put it in the corresponding position

 

 

 

first group

 

 

 

 

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg.dll

Put on

opencv_349/build/3rdparty/ffmpeg/opencv_ffmpeg.dll"

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/opencv_ffmpeg_64.dll

Put on

opencv_349/build/3rdparty/ffmpeg/opencv_ffmpeg_64.dll

 

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/548e3c997a80d65f710b9048f1d33371e3a203ac/ffmpeg/ffmpeg_version.cmake

 

Save as txt format, you need to remove txt

 

 

Put on

opencv349/opencv_349/build/3rdparty/ffmpeg/ffmpeg_version.cmake

 

 

 

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/32e315a5b106a7b89dbed51c28f8120a48b368b4/ippicv/ippicv_2019_win_intel64_20180723_general.zip

Put on

opencv_349/build/3rdparty/ippicv

Then automatically transfer back to

opencv_349\.cache\ippicv\1d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip

 

 

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i"

 

 

Put

opencv_349/build/downloads/xfeatures2d/boostdesc_bgm.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i

put to

opencv_349/build/downloads/xfeatures2d/boostdesc_bgm_bi.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i

put to

opencv_349/build/downloads/xfeatures2d/boostdesc_bgm_hd.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i

put to

opencv_349/build/downloads/xfeatures2d/boostdesc_binboost_064.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i

put to

opencv_349/build/downloads/xfeatures2d/boostdesc_binboost_128.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i

put to

opencv_349/build/downloads/xfeatures2d/boostdesc_binboost_256.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i

put to

opencv_349/build/downloads/xfeatures2d/boostdesc_lbgm.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i

put to

/opencv_349/build/downloads/xfeatures2d/vgg_generated_48.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i

put to

opencv_349/build/downloads/xfeatures2d/vgg_generated_64.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i

put to

opencv_349/build/downloads/xfeatures2d/vgg_generated_80.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i

put to

opencv_349/build/downloads/xfeatures2d/vgg_generated_120.i

download

https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat

put to

opencv_349/build/testdata/cv/face//face_landmark_model.dat

 

 

again

 

 

 

 

click

 

 

 

 

 

 

 

 

Second error

 

 

 

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppicom_LIBRARY (ADVANCED)
    linked by target "opencv_test_phase_unwrapping" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_core" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_highgui" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_videostab" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudaarithm" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_core" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_rgbd" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_features2d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudafeatures2d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_imgcodecs" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudaarithm" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_flann" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_objdetect" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_line_descriptor" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_hdf" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudafeatures2d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_imgproc" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_videoio" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudalegacy" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_stereo" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_imgproc" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_line_descriptor" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_ml" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudafilters" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_reg" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_reg" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudastereo" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_video" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_tracking" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_video" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudabgsegm" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_stereo" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_xphoto" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudabgsegm" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_shape" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudafilters" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudaimgproc" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudaimgproc" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudawarping" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_dnn" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudawarping" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_bioinspired" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_photo" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_dnn" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_features2d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudacodec" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_fuzzy" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_xphoto" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_imgcodecs" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_videoio" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_photo" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_bgsegm" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_text" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_calib3d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudacodec" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_calib3d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudastereo" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_objdetect" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_structured_light" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_tracking" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_xfeatures2d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_xfeatures2d" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_ximgproc" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_ximgproc" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_aruco" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_bioinspired" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudalegacy" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudaobjdetect" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudaobjdetect" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_cudaoptflow" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_cudaoptflow" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_face" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_optflow" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_optflow" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_stitching" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_stitching" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_test_superres" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_perf_superres" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_world" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_world" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/world
    linked by target "opencv_img_hash" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_contrib_349/modules/img_hash
    linked by target "opencv_img_hash" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_contrib_349/modules/img_hash
    linked by target "opencv_test_img_hash" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_contrib_349/modules/img_hash
    linked by target "opencv_ts" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/ts
    linked by target "opencv_ts" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/modules/ts
    linked by target "opencv_traincascade" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/apps/traincascade
    linked by target "opencv_createsamples" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/apps/createsamples
    linked by target "opencv_annotation" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/apps/annotation
    linked by target "opencv_visualisation" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/apps/visualisation
    linked by target "opencv_interactive-calibration" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/apps/interactive-calibration
    linked by target "opencv_version_win32" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/apps/version
    linked by target "opencv_version" in directory D:/dongdong/v1_Tool/v3_dll/opencv349/opencv_349/apps/version

Generating done

  

 

 

 

First error reporting solution

https://stackoverflow.com/questions/46584000/cmake-error-variables-are-set-to-notfound 

 

 

 

1) find rows that meet the following conditions:

find_cuda_helper_libs(nppi)

  

 

And replace it with the following line:

 find_cuda_helper_libs(nppial)
  find_cuda_helper_libs(nppicc)
  find_cuda_helper_libs(nppicom)
  find_cuda_helper_libs(nppidei)
  find_cuda_helper_libs(nppif)
  find_cuda_helper_libs(nppig)
  find_cuda_helper_libs(nppim)
  find_cuda_helper_libs(nppist)
  find_cuda_helper_libs(nppisu)
  find_cuda_helper_libs(nppitc)

  

 

 

 

I tried the following methods and succeeded:

FindCUDA.cmake changes the nppi into several split in the library. This must be done in three places. Keep in mind that this change is only for use with CUDA 9.0, I will not check the version or anything, and you should do so if you intend to provide it to different people with different CUDA versions.

1) Find rows that meet the following criteria:

find_cuda_helper_libs(nppi)

And replace it with the following line:

  find_cuda_helper_libs(nppial)
  find_cuda_helper_libs(nppicc)
  find_cuda_helper_libs(nppicom)
  find_cuda_helper_libs(nppidei)
  find_cuda_helper_libs(nppif)
  find_cuda_helper_libs(nppig)
  find_cuda_helper_libs(nppim)
  find_cuda_helper_libs(nppist)
  find_cuda_helper_libs(nppisu)
  find_cuda_helper_libs(nppitc)

2) Find row

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")

  

 

 

And change it to

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")

  

3) Find the unset variable and add a new variable

unset(CUDA_nppi_LIBRARY CACHE)

  

 

 

And change it to:

unset(CUDA_nppial_LIBRARY CACHE)
unset(CUDA_nppicc_LIBRARY CACHE)
unset(CUDA_nppicom_LIBRARY CACHE)
unset(CUDA_nppidei_LIBRARY CACHE)
unset(CUDA_nppif_LIBRARY CACHE)
unset(CUDA_nppig_LIBRARY CACHE)
unset(CUDA_nppim_LIBRARY CACHE)
unset(CUDA_nppist_LIBRARY CACHE)
unset(CUDA_nppisu_LIBRARY CACHE)
unset(CUDA_nppitc_LIBRARY CACHE)

  

 

 

 

In addition, opencvdetectcuda Cmake you must also remove the 2.0 schema that is no longer supported.

 

 

 

It has:

  ...
  set(__cuda_arch_ptx "")
  if(CUDA_GENERATION STREQUAL "Fermi")
    set(__cuda_arch_bin "2.0")
  elseif(CUDA_GENERATION STREQUAL "Kepler")
    set(__cuda_arch_bin "3.0 3.5 3.7")
  ...

 

 

 

 

It should be:

Basically, the first if is deleted and the first elif becomes an if.

 ...
  set(__cuda_arch_ptx "")
  if(CUDA_GENERATION STREQUAL "Kepler")
    set(__cuda_arch_bin "3.0 3.5 3.7")
  elseif(CUDA_GENERATION STREQUAL "Maxwell")
    set(__cuda_arch_bin "5.0 5.2")
  ...

  

 

 

 

At the same time, modify and remove 2.0

set(__cuda_arch_bin "2.0 3.0 3.5 3.7 5.0 5.2 6.0 6.1") 

 

 

After modification

set(__cuda_arch_bin "3.0 3.5 3.7 5.0 5.2 6.0 6.1") 

  

 

Added by $kevan on Fri, 28 Jan 2022 20:52:04 +0200