如何从cmake为可执行文件设置DYLD_库_路径?
我编译了一个可执行文件,该文件链接到Mac OS上的某个库如何从cmake为可执行文件设置DYLD_库_路径?,cmake,environment-variables,Cmake,Environment Variables,我编译了一个可执行文件,该文件链接到Mac OS上的某个库a.dyld,该库使用cmake位于/mylib。 当我试图运行该程序时,出现错误消息: dyld: library not loaded a.dyld Referenced from: path the executable file belongs Reason: imagh not found. 因此,如果我将环境变量$DYLD\u LIBRARY\u PATH设置为/mylib,程序将正常工作。 但我不想这样做,因为它强制每个可
a.dyld
,该库使用cmake位于/mylib
。
当我试图运行该程序时,出现错误消息:
dyld: library not loaded a.dyld
Referenced from: path the executable file belongs
Reason: imagh not found.
因此,如果我将环境变量$DYLD\u LIBRARY\u PATH
设置为/mylib
,程序将正常工作。
但我不想这样做,因为它强制每个可执行文件查找同一个库。(我在许多目录中有多个同名库,其中每个目录名指定库的功能。)
是否可以从cmake设置$DYLD\u LIBRARY\u路径
比如说,我有多个目录,比如
test_project
|--CMakeLists.txt
|--/src
|--CMakeLists.txt (build b.dyld)
... (programs for b.dyld)
|--/run_test1
|-- CMakeLitsts.txt (link b.dyld, and a.dyld under /mylyb1)
|-- (programs to be run)
|--/run_test2
|-- CMakeLitsts.txt (link b.dyle, and a.dyld under /mylyb2)
|-- (programs to be run)
... (/run_testN)
运行可执行文件时,CMake无法影响环境设置。相反,您需要为可执行文件设置RPATH——目录列表,“内置”到可执行文件本身,加载程序将在其中搜索库。CMake对RPATH设置有很好的支持。请参阅。因此,一旦为可执行文件设置了RPATH,就不需要再设置DYLD_LIBRARY_路径了?是的,要在运行时查找库,设置RPATH就足够了。设置变量
DYLD\u LIBRARY\u PATH
只是另一种方式。运行可执行文件时,CMake不会影响环境设置。相反,您需要为可执行文件设置RPATH——目录列表,“内置”到可执行文件本身,加载程序将在其中搜索库。CMake对RPATH设置有很好的支持。请参阅。因此,一旦为可执行文件设置了RPATH,就不需要再设置DYLD_LIBRARY_路径了?是的,要在运行时查找库,设置RPATH就足够了。设置变量DYLD\u LIBRARY\u PATH
只是另一种方法。