RunEnvironment helper prepares
DYLD_LIBRARY_PATH environment variables to locate shared libraries and executables of your requirements at runtime.
RunEnvironment is no longer needed, at least explicitly in conanfile.py. It has been integrated
self.run(..., run_environment=True) argument. Check self.run().
This helper is specially useful if:
- You are requiring packages with shared libraries and you are running some executable that needs those libraries.
- You have a requirement with some tool (executable) and you need it to be in the path.
from conans import ConanFile, RunEnvironment class ExampleConan(ConanFile): ... def build(self): env_build = RunEnvironment(self) with tools.environment_append(env_build.vars): self.run("....") # All the requirements bin folder will be available at PATH # All the lib folders will be available in LD_LIBRARY_PATH and DYLD_LIBRARY_PATH
It sets the following environment variables:
|PATH||Containing all the requirements
|LD_LIBRARY_PATH||Containing all the requirements
|DYLD_LIBRARY_PATH||Containing all the requirements
Security restrictions might apply in OSX
(read this thread), so the
DYLD_LIBRARY_PATH environment variable is not directly transferred to the child process. In that case, you have to use it explicitly in
def build(self): env_build = RunEnvironment(self) with tools.environment_append(env_build.vars): # self.run("./myexetool") # won't work, even if 'DYLD_LIBRARY_PATH' is in the env self.run("DYLD_LIBRARY_PATH=%s ./myexetool" % os.environ['DYLD_LIBRARY_PATH'])
This is already handled automatically by the
self.run(..., run_environment=True) argument.