Как указать LD_LIBRARY_PATH через add_custom_command? - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь добавить ld_library_path через cmake.

То, что я до сих пор делал, это

add_custom_command(TARGET ${target}
   POST_BUILD
   COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${target}> ${PROJECT_BINARY_DIR}/bin
   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
   COMMAND $<TARGET_FILE:${target}>
   ################ ENV Set here ####################
   -E env "LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:${PROJECT_SOURCE_DIR}/boost_linux/lib"

   COMMENT "Running Tests Now .. " VERBATIM
)

Но я все еще получаю ошибку компоновки во время выполнения.Кто-нибудь знает, как правильно связать путь к lib.

В bash это будет похоже на export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/lib

1 Ответ

0 голосов
/ 19 декабря 2018

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

add_custom_command(
  ...
  COMMAND ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=..."
    actual command line that you need to execute
)

Таким образом, -E env работает так, что выполняет все, что передано после спецификации переменной env.

Обратите внимание, однако, то, что вы не можете использовать несколько COMMAND аргументов и устанавливать env в первом, используя его в следующих COMMAND s - это не будет работать.Или, по крайней мере, это зависит от генератора.С Make backend это транслируется в несколько вызовов shell - поэтому он устанавливает env, но остальные команды выполняются отдельно и не видят его.Генератор ниндзя переводит несколько COMMAND в нечто вроде cmd1 && cmd2 && ..., поэтому он работает там, AFAIK.

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