cmake find_package с указанным расположением библиотеки protobuf [duplicate]

Тот же подход, но завернутый в пакет / функцию, состоит в том, чтобы «захватить дух ваших вызовов ggplot», используя library(ggghost)

library(ggghost)
library(ggplot2)

df <- data.frame(x = 1:20, y = 1:20, z= letters[1:20])

p %g<% ggplot(data = df, aes(x, y))
p <- p + geom_point()

rm(df)
ggghost::recover_data(p)
## this returns the data back to your environment

2
задан deniz 14 January 2016 в 18:22
поделиться

1 ответ

Параметр CMAKE_PREFIX_PATH выполняет именно эти цели: намекает на функцию find_* относительно местоположения искомого элемента.

Хотя описание этой переменной не относится к find_package function, переменная влияет на него косвенно : большинство скриптов Find<name>.cmake используют функции find_library и find_path . Обратите внимание, что все функции find_* имеют точный алгоритм для элементов поиска, а пути, построенные с CMAKE_PREFIX_PATH, проверяются перед системными.

Кроме того, CMAKE_PREFIX_PATH влияет на некоторые другие процедуры поиска. Например, если пакет 3d party предоставляет скрипт <name>Config.cmake вместо Find<name>.cmake, этот скрипт также выполняется с использованием этой переменной. pkg_check_modules также использует CMAKE_PREFIX_PATH для файлов поиска .pc, описанных в пакете.

CMAKE_PREFIX_PATH переменная может быть задана как среда (в зависимости от платформы и использования путь), поскольку параметр cmake вызывает:

cmake -DCMAKE_PREFIX_PATH=<additional-path> <other-parameters>

или в CMakeLists.txt файле. В последнем случае лучше добавить каталоги поиска , поэтому пользователь вашего пакета может также установить переменную для пакетов поиска, не отгруженных с вашим проектом:

list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/dependencies")
6
ответ дан Tsyvarev 21 August 2018 в 03:08
поделиться
  • 1
    Спасибо, он отлично поработал. Странно, что такой важный вариант не отмечен, чтобы помочь найти скрипты. Имеет ли он какие-либо побочные эффекты, которые могли бы «ломаться»? любой скрипт? – deniz 15 January 2016 в 05:24
  • 2
    Пока каталог, указанный в CMAKE_PREFIX_PATH, не имеет частичной или сломанной установки или имеет несвязанные файлы под стандартными суффиксами поиска (lib /, lib64 /, include / и т. Д.), Установка этой переменной не вредит какому-либо скрипту find , И если это так, это проблема в самом скрипте find. Самое худшее, что может случиться, - это то, что скрипт может игнорировать каталог, указанный в CMAKE_PREFIX_PATH. В этом случае нужно проверить конкретный скрипт find. – Tsyvarev 15 January 2016 в 09:51
Другие вопросы по тегам:

Похожие вопросы: