jacobwilliams / json-fortran

A Modern Fortran JSON API
https://jacobwilliams.github.io/json-fortran/
Other
329 stars 82 forks source link

CMake: use of the include() command with the result of the export() command is deprecated #474

Open BaconPancakes opened 3 years ago

BaconPancakes commented 3 years ago

I am running Cmake 3.16 and trying to use the find_package way linking the json-fortran results in:

[cmake] CMake Error at build/json-fortran/jsonfortran-intel-config.cmake:19 (include):
[cmake]   The file
[cmake] 
[cmake]     my-project-dir/build/json-fortran/jsonfortran-intel-targets.cmake
[cmake] 
[cmake]   was generated by the export() command.  It may not be used as the argument
[cmake]   to the include() command.  Use ALIAS targets instead to refer to targets by
[cmake]   alternative names.

Here's what I'm doing:

add_subdirectory(json-fortran)
list(APPEND CMAKE_PREFIX_PATH  "${CMAKE_CURRENT_SOURCE_DIR}/build/json-fortran")
find_package ( jsonfortran-${CMAKE_Fortran_COMPILER_ID} REQUIRED 8.2.0)
include_directories ( "${jsonfortran_INCLUDE_DIRS}" )

The workaround is to add the following to the CMakeLists.txt

cmake_policy(SET CMP0024 OLD)

referencing https://cmake.org/cmake/help/v3.17/policy/CMP0024.html#policy:CMP0024

However, as it warns, this is a deprecated feature.

jacobwilliams commented 3 years ago

I'm not a CMake guru. Is there something we can do to avoid relying on depreciated features I wonder?

daydream123 commented 5 months ago

I also have this issue now, and I tried to add cmake_policy(SET CMP0024 OLD), but it still does not work