RunEnvironment

The RunEnvironment helper prepare PATH, LD_LIBRARY_PATH and DYLD_LIBRARY_PATH environment variables to locate shared libraries and executables of your requirements at runtime.

This helper is specially useful:

  • If you are requiring packages with shared libraries and you are running some executable that needs those libraries.

  • If you have a requirement with some tool (executable) and you need it 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:

NAME

DESCRIPTION

PATH

Containing all the requirements bin folders.

LD_LIBRARY_PATH

Containing all the requirements lib folders. (Linux)

DYLD_LIBRARY_PATH

Containing all the requirements lib folders. (OSX)

Important

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 your conanfile.py:

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'])