Переопределение порядка поиска по умолчанию для find_package - PullRequest
0 голосов
/ 31 января 2019

Я стараюсь, чтобы cmake find_package не использовал FindJPEG.cmake из системы, я создал копию FindJPEG.cmake, немного ее изменил и поместил в нее сообщение (STATUS "..."), чтобыв состоянии дифференцировать его, что-то вроде:

...
message(STATUS "MY CUSTOM JPEG FIND SCRIPT")
if(NOT JPEG_LIBRARY)
  message(STATUS "MY CUSTOM JPEG FIND SCRIPT >> FIRST TIME FIND LIBRARY")
  find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names})
...

, затем я скопировал этот измененный сценарий в / my / custom / module / path и затем я начал свою конфигурацию cmake с:

cmake .. -DCMAKE_MODULE_PATH=/my/custom/module/path;${CMAKE_MODULE_PATH}

Если в моем CMakeLists.txt я вызываю только find_package (JPEG), то все в порядке (отображается пользовательское сообщение). Но затем я добавляю зависимость Jasper в свой CMakeLists.txt, которая также зависит от JPEG.Так что мне нужно только сделать find_package (Jasper), чтобы зависимость JPEG была загружена jasper.

Проблема с последним в том, что мой измененный скрипт FindJPEG.cmake теперь не вызывается, и я предполагаю, что это потому, чтопорядок поиска CMAKE_MODULE_PATH сначала начинается в текущем каталоге ... и не следует порядку, указанному в моей командной строке cmake.

Можем ли мы изменить это поведение, или, если я интерпретирую это неправильно, кто-то может объяснить лучшепочему это происходит?

Спасибо, Нуно

Ответы [ 2 ]

0 голосов
/ 31 января 2019

;поэтому вы должны использовать кавычку для экранирования -DCMAKE_MODULE_PATH = "....."

0 голосов
/ 31 января 2019

Если вы отправляете с вашим собственным пользовательским путем к модулю, используйте:

SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake)

В начале вашего проекта это обычный шаблон, wiuth CMake, фудлер, где ваши новые cmake файлырасположены.

Тогда вы можете захотеть взглянуть на некоторые переменные, такие как CMAKE_LIBRARY_PATH , которых может быть достаточно для изменения пути поиска без переписывания нового FindJPEG.cmake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...