Почему этот find_package не работает в новых версиях CMake? - PullRequest
1 голос
/ 15 мая 2019

У меня возникла проблема в проекте при обновлении с CMake 3.8 до 3.14.Я сократил это до следующей проблемы.Обратите внимание, что project предшествует find_package (наоборот, у меня нет проблемы, которую я описываю).

cmake_minimum_required(VERSION 3.2.1)
find_package(MPI REQUIRED)
project(Test CXX)).

Когда я собираю с CMake 3.8, вывод будет следующим:

build3_8$ cmake ../source/
-- The CXX compiler identification is Intel 17.0.5.20170817
-- Check for working CXX compiler: (...)/linux/bin/intel64/icpc
-- Check for working CXX compiler: (...)/linux/bin/intel64/icpc -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: (...)/build3_8

С CMake 3.14 я получаю следующий вывод:

build3_14$ cmake ../source/
CMake Error at (...)/CMake/3.14.0/share/cmake-3.14/Modules/FindPackageHandleStandardArgs.cmake:211 (message):
  No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()
Call Stack (most recent call first):
  (...)/CMake/3.14.0/share/cmake-3.14/Modules/FindMPI.cmake:1672 (find_package_handle_standard_args)
  CMakeLists.txt:3 (find_package)


-- Configuring incomplete, errors occurred!

Интересно, почему это происходит с более новой версией CMake (хотя FindMPI.cmake совершенно другой)?

Кроме того, что я могу сделать, чтобы решить эту проблему?Нужно ли мне писать свою собственную конфигурацию?

(я не могу просто изменить порядок project и find_package, потому что для компиляторов созданы обертки (не мой выбор, пожалуйста, не вините меня))

...