def build_sln_command(settings, sln_path, targets=None, upgrade_project=True, build_type=None, arch=None, parallel=True, toolset=None, platforms=None, output=None, verbosity=None, definitions=None): """ Use example: build_command = build_sln_command(self.settings, "myfile.sln", targets=["SDL2_image"]) command = "%s && %s" % (tools.vcvars_command(self.settings), build_command) self.run(command) """ conan_v2_behavior("'tools.build_sln_command' is deprecated, use 'MSBuild()' helper instead") from conans.client.build.msbuild import MSBuild tmp = MSBuild(settings) output = default_output(output, fn_name='conans.client.tools.win.build_sln_command') tmp._output = output # Generate the properties file props_file_contents = tmp._get_props_file_contents(definitions) tmp_path = os.path.join(mkdir_tmp(), ".conan_properties") save(tmp_path, props_file_contents) # Build command command = tmp.get_command(sln_path, tmp_path, targets=targets, upgrade_project=upgrade_project, build_type=build_type, arch=arch, parallel=parallel, toolset=toolset, platforms=platforms, use_env=False, verbosity=verbosity) return command
def without_runtime_test(self): settings = MockSettings({"build_type": "Debug", "compiler": "Visual Studio", "arch": "x86_64"}) conanfile = MockConanfile(settings) msbuild = MSBuild(conanfile) template = msbuild._get_props_file_contents() self.assertNotIn("<RuntimeLibrary>", template)
def dont_mess_with_build_type_test(self): settings = MockSettings({"build_type": "Debug", "compiler": "Visual Studio", "arch": "x86_64"}) conanfile = MockConanfile(settings) msbuild = MSBuild(conanfile) self.assertEquals(msbuild.build_env.flags, ["-Zi", "-Ob0", "-Od"]) template = msbuild._get_props_file_contents() self.assertIn("-Ob0", template) self.assertIn("-Od", template) msbuild.build_env.flags = ["-Zi"] template = msbuild._get_props_file_contents() self.assertNotIn("-Ob0", template) self.assertNotIn("-Od", template)
def test_skip_only_none_definitions(self): # https://github.com/conan-io/conan/issues/6728 settings = MockSettings({"build_type": "Debug", "compiler": "Visual Studio", "arch": "x86_64", "compiler.runtime": "MDd"}) conanfile = MockConanfile(settings) msbuild = MSBuild(conanfile) template = msbuild._get_props_file_contents(definitions={"foo": 0, "bar": False}) self.assertIn("<PreprocessorDefinitions>foo=0;bar=False;%(PreprocessorDefinitions)", template)
def test_dont_mess_with_build_type(self): settings = MockSettings({"build_type": "Debug", "compiler": "Visual Studio", "arch": "x86_64", "compiler.runtime": "MDd"}) conanfile = MockConanfile(settings) msbuild = MSBuild(conanfile) self.assertEqual(msbuild.build_env.flags, []) template = msbuild._get_props_file_contents() self.assertNotIn("-Ob0", template) self.assertNotIn("-Od", template) msbuild.build_env.flags = ["-Zi"] template = msbuild._get_props_file_contents() self.assertNotIn("-Ob0", template) self.assertNotIn("-Od", template) self.assertIn("-Zi", template) self.assertIn("<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>", template)
def definitions_no_value_test(self): settings = MockSettings({"build_type": "Debug", "compiler": "Visual Studio", "arch": "x86_64", "compiler.runtime": "MDd"}) conanfile = MockConanfile(settings) msbuild = MSBuild(conanfile) template = msbuild._get_props_file_contents(definitions={'_DEBUG': None}) self.assertIn("<PreprocessorDefinitions>" "_DEBUG;" "%(PreprocessorDefinitions)</PreprocessorDefinitions>", template)
def test_definitions(self): settings = MockSettings({"build_type": "Debug", "compiler": "Visual Studio", "arch": "x86_64", "compiler.runtime": "MDd"}) conanfile = MockConanfile(settings) msbuild = MSBuild(conanfile) template = msbuild._get_props_file_contents(definitions={'_WIN32_WINNT': "0x0501"}) self.assertIn("<PreprocessorDefinitions>" "_WIN32_WINNT=0x0501;" "%(PreprocessorDefinitions)</PreprocessorDefinitions>", template)
def build_sln_command(settings, sln_path, targets=None, upgrade_project=True, build_type=None, arch=None, parallel=True, toolset=None, platforms=None): """ Use example: build_command = build_sln_command(self.settings, "myfile.sln", targets=["SDL2_image"]) command = "%s && %s" % (tools.vcvars_command(self.settings), build_command) self.run(command) """ from conans.client.build.msbuild import MSBuild tmp = MSBuild(settings) tmp._output = _global_output # Generate the properties file props_file_contents = tmp._get_props_file_contents() tmp_path = os.path.join(mkdir_tmp(), ".conan_properties") save(tmp_path, props_file_contents) # Build command command = tmp.get_command(sln_path, tmp_path, targets=targets, upgrade_project=upgrade_project, build_type=build_type, arch=arch, parallel=parallel, toolset=toolset, platforms=platforms, use_env=False) return command