【发布时间】:2018-12-18 21:35:23
【问题描述】:
我正在尝试通过 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
)
但我在运行时仍然遇到链接错误。有谁知道如何正确链接库路径。
在 bash 中它会像
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/lib
【问题讨论】:
-
add_custom_command环境变量的设置方式与add_custom_target相同。请注意,您的代码中的${LD_LIBRARY_PATH}指的是 CMake 变量,而不是环境变量。如需引用环境变量,请使用$ENV{LD_LIBRARY_PATH}。 -
ENVIRONMENT LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:/path/to/lib 仍然不起作用。
-
ENVIRONMENT没有add_custom_command选项,您可以在documentation 中查看。只需使用引用问题的答案即可。 -
你错误地解释了that answer:你需要
COMMAND ${CMAKE_COMMAND} -E env "LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:${PROJECT_SOURCE_DIR}/path/to/lib" $<TARGET_FILE:${target}>。另请注意,LD_LIBRARY_PATH只会在命令执行期间在 build 阶段更改。您无法使用CMakeLists.txt中的message()命令观察到这种变化,该命令在配置 阶段执行。