Кажется, этот вопрос задавался очень часто, но ни одно из решений, похоже, не применяется в моем случае.Установить путь поиска компоновщика для сборки в CMake
Я в среде CMake/Linux и должен запускать исполняемый двоичный файл во время сборки (в частности, protoc
).
Этот бинарный нуждается в библиотеке, но это не установлен (и не может быть) в в стандартных каталогах, как /usr
, так что библиотека не может быть найден.
К сожалению, я не могу манипулировать вызовом protoc
, потому что он встроен в сторонний скрипт.
Теперь я могу установить LD_LIBRARY_PATH
перед каждым make
или установить его в системном режиме, но это очень неудобно, особенно если речь идет о IDE, в которых происходит сборка или распределенные сценарии сборки с непрерывной средой сборки.
Я попытался установить LD_LIBRARY_PATH
через
set(ENV{LD_LIBRARY_PATH} "/path/to/library/dir")
, но это, кажется, не имеет никакого эффекта во время стадии сборки.
Итак, мой вопрос: могу ли я установить путь поиска библиотеки в CMake, который используется во время сборки?
Может ли это http://stackoverflow.com/a/30455909/ помочь вам? –
, к сожалению, не потому, что как библиотека, так и исполняемый исполняются в другом месте. – frans
Возможно, нашел способ: попробуйте добавить к скрипту 'Cmake':' execute_process (COMMAND export LD_LIBRARY_PATH = "/ path/to/library/dir: $ LD_LIBRARY_PATH") 'Надеюсь,' Cmake' запустит ваш сторонний скрипт в subhell/current shell - тогда на него повлияет 'export'. –