def test_vcvars_dict_diff(self): text = """ os: [Windows] compiler: Visual Studio: version: ["14"] """ settings = Settings.loads(text) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "14" with tools.environment_append({"MYVAR": "1"}): ret = vcvars_dict(settings, only_diff=False, output=self.output) self.assertIn("MYVAR", ret) self.assertIn("VCINSTALLDIR", ret) ret = vcvars_dict(settings, output=self.output) self.assertNotIn("MYVAR", ret) self.assertIn("VCINSTALLDIR", ret) my_lib_paths = "C:\\PATH\\TO\\MYLIBS;C:\\OTHER_LIBPATH" with tools.environment_append({"LIBPATH": my_lib_paths}): ret = vcvars_dict(settings, only_diff=False, output=self.output) str_var_value = os.pathsep.join(ret["LIBPATH"]) self.assertTrue(str_var_value.endswith(my_lib_paths)) # Now only a diff, it should return the values as a list, but without the old values ret = vcvars_dict(settings, only_diff=True, output=self.output) self.assertEqual(ret["LIBPATH"], str_var_value.split(os.pathsep)[0:-2]) # But if we apply both environments, they are composed correctly with tools.environment_append(ret): self.assertEqual(os.environ["LIBPATH"], str_var_value)
def __init__(self, conanfile): super(VirtualBuildEnvGenerator, self).__init__(conanfile) self.venv_name = "conanbuildenv" compiler = conanfile.settings.get_safe("compiler") if compiler == "Visual Studio": self.env = VisualStudioBuildEnvironment(conanfile).vars_dict self.env.update(vcvars_dict(conanfile.settings)) else: self.env = AutoToolsBuildEnvironment(conanfile).vars_dict
def vcvars_dict_diff_test(self): text = """ os: [Windows] compiler: Visual Studio: version: ["14"] """ settings = Settings.loads(text) settings.os = "Windows" settings.compiler = "Visual Studio" settings.compiler.version = "14" with tools.environment_append({"MYVAR": "1"}): ret = vcvars_dict(settings, only_diff=False) self.assertIn("MYVAR", ret) self.assertIn("VCINSTALLDIR", ret) ret = vcvars_dict(settings) self.assertNotIn("MYVAR", ret) self.assertIn("VCINSTALLDIR", ret)
def __init__(self, conanfile): super(VirtualBuildEnvGenerator, self).__init__(conanfile) self.venv_name = "conanbuildenv" compiler = conanfile.settings.get_safe("compiler") if compiler == "Visual Studio": self.env = VisualStudioBuildEnvironment(conanfile).vars_dict settings_vars = vcvars_dict(conanfile.settings, output=conanfile.output) for env_var in self.env: self.env[env_var].extend(settings_vars.pop(env_var, [])) self.env.update(settings_vars) else: self.env = AutoToolsBuildEnvironment(conanfile).vars_dict
def __init__(self, conanfile): super(VirtualBuildEnvGenerator, self).__init__(conanfile) compiler = conanfile.settings.get_safe("compiler") if compiler == "Visual Studio": self.env = VisualStudioBuildEnvironment(conanfile).vars_dict settings_vars = vcvars_dict(conanfile.settings, output=conanfile.output) # self.env has higher priority, so only extend (append) to it. for name, value in self.env.items(): if isinstance(value, list): value.extend(settings_vars.pop(name, [])) self.env.update(settings_vars) else: self.env = AutoToolsBuildEnvironment(conanfile).vars_dict
def vcvars_dict(*args, **kwargs): return tools_win.vcvars_dict(output=_global_output, *args, **kwargs)