我正在尝试通过cmake添加ld_library_path。
到目前为止,我所做的是
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
答案 0 :(得分:0)
尚不清楚您到底要实现什么目标,以及它与链接错误之间的关系。但是,使用自定义环境变量运行命令的方式如下:
add_custom_command(
...
COMMAND ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=..."
actual command line that you need to execute
)
因此,-E env
的工作方式是执行环境变量指定后传递的所有内容。
但是请注意,在以下COMMAND
中使用它时,您不能使用多个COMMAND
参数并在第一个参数中设置env-它将无法工作。或者,至少,它取决于发电机。使用Make后端,它可以转换为对shell的多次调用-因此它设置了env,但是其余命令是分别执行的,看不到它。忍者生成器将多个COMMAND
转换为类似cmd1 && cmd2 && ...
之类的东西,以便在AFAIK上正常工作。