fraunhoferhhi / vvdec

VVdeC, the Fraunhofer Versatile Video Decoder
https://www.hhi.fraunhofer.de/en/departments/vca/technologies-and-solutions/h266-vvc.html
BSD 3-Clause Clear License
454 stars 91 forks source link

CMake Error: could not find check_missing_intrinsics #42

Closed bart-kroon closed 3 years ago

bart-kroon commented 3 years ago

Dear video expert,

Using VVenC and VVdeC as sub-projects, I tried upgrading VVdeC from v0.2.0.0 to v1.0.0.

In v0.2.1.0 the line include( check_missing_intrinsics ) was introduced in the CMake project. Is it expected that the super project extends the CMake module path? To me this appears to be something internal to VVdeC.

-- my_tmiv_build_dir/_deps/vvenc-src: vvenc embedded, subdirectories to be added: source/Lib/vvenc;source/App/vvencFFapp
-- my_tmiv_build_dir/_deps/vvdec-src: vvdec embedded, subdirectories to be added: source/Lib/vvdec;source/App/vvdecapp
CMake Error at my_tmiv_build_dir/_deps/vvdec-src/source/Lib/vvdec/CMakeLists.txt:7 (include):
  include could not find load file:

    check_missing_intrinsics

This is the CMake script that we use to include VVenC and VVdeC as sub-projects: https://gitlab.com/mpeg-i-visual/tmiv/-/blob/master/cmake/VVenC.cmake (with ISO/IEC license). I could trigger this behaviour by changing the version number.

Please let me know if I am doing something wrong. I tried to include your projects in the most polite and least intrusive way possible 😉

Best regards,

Bart

adamjw24 commented 3 years ago

Dear Bart,

it seems as if a cause of the issue is that you are cloning the project and only adding the App source subdirectory into your top-level cmake. With vvdec/vvenc, you should add the top-level directory. The included top-level CMakeLists.txt file would know how to handle this situation. See the following snippet responsible for handling this: https://github.com/fraunhoferhhi/vvdec/blob/12b1c16647526a0b4e873d2b0e90ab7f668f8087/CMakeLists.txt#L52-L67

However still, it seems for now the following line is not included there, and must be added manually (might be a bug).

list( APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/[path/to/vvdec/checkout]/cmake/modules" )

We will discuss this internally and I'll report back if we will include this code into mentioned top-level CMakeLists.txt responsible for inclusion to external projects or if the mentioned line has to be added manually.

Best regards, Adam

bart-kroon commented 3 years ago

Hi @adamjw24 ,

it seems as if the cause of the issue is that you are cloning the project and only adding the App source subdirectory into your top-level cmake.

The top-level CMakeLists.txt is included. We are including VVdeC like this:

include(FetchContent)
fetchcontent_declare(VVDEC
  GIT_REPOSITORY https://github.com/fraunhoferhhi/vvdec
  GIT_TAG "v1.0.0"
  GIT_PROGRESS TRUE
 )
 set(vvdec_ADD_SUBDIRECTORIES "source/App/vvdecapp")
 fetchcontent_makeavailable(VVDEC)

When needed, I can create a minimal example project.

We will discuss this internally and I'll report back if we will include this code into mentioned top-level CMakeLists.txt responsible for inclusion to external projects or if the mentioned line has to be added manually.

Sure, I can wait. Based on the line that you quoted if( NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ), I assumed that it is supported to include VVdeC as a sub-project like I did.

adamjw24 commented 3 years ago

Should be fixed with https://github.com/fraunhoferhhi/vvdec/pull/43