Тот же подход, но завернутый в пакет / функцию, состоит в том, чтобы «захватить дух ваших вызовов 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
Параметр 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")
CMAKE_PREFIX_PATH
, не имеет частичной или сломанной установки или имеет несвязанные файлы под стандартными суффиксами поиска (lib /, lib64 /, include / и т. Д.), Установка этой переменной не вредит какому-либо скриптуfind
, И если это так, это проблема в самом скриптеfind
. Самое худшее, что может случиться, - это то, что скрипт может игнорировать каталог, указанный вCMAKE_PREFIX_PATH
. В этом случае нужно проверить конкретный скриптfind
. – Tsyvarev 15 January 2016 в 09:51