Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从cmake为可执行文件设置DYLD_库_路径?_Cmake_Environment Variables - Fatal编程技术网

如何从cmake为可执行文件设置DYLD_库_路径?

如何从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,程序将正常工作。 但我不想这样做,因为它强制每个可

我编译了一个可执行文件,该文件链接到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
,程序将正常工作。 但我不想这样做,因为它强制每个可执行文件查找同一个库。(我在许多目录中有多个同名库,其中每个目录名指定库的功能。)

是否可以从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
只是另一种方法。