def test_cmake_find_package_multi_links_flags(): # https://github.com/conan-io/conan/issues/8703 conanfile = ConanFile(Mock(), None) conanfile.settings = "os", "compiler", "build_type", "arch" conanfile.initialize( Settings({ "os": ["Windows"], "compiler": ["gcc"], "build_type": ["Release"], "arch": ["x86"] }), EnvValues()) conanfile.settings.build_type = "Release" conanfile.settings.arch = "x86" cpp_info = CppInfo("mypkg", "dummy_root_folder1") cpp_info.sharedlinkflags = ["/NODEFAULTLIB", "/OTHERFLAG"] cpp_info.exelinkflags = ["/OPT:NOICF"] conanfile.deps_cpp_info.add("mypkg", cpp_info) gen = CMakeFindPackageMultiGenerator(conanfile) files = gen.content d = files["mypkgTarget-release.cmake"] assert "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:-OPT:NOICF>" in d assert "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,MODULE_LIBRARY>:-NODEFAULTLIB;-OTHERFLAG>" in d assert "$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,SHARED_LIBRARY>:-NODEFAULTLIB;-OTHERFLAG>" in d
def test_cmake_find_package_multi(self): generator = CMakeFindPackageMultiGenerator(self.conanfile) content = generator.content six.assertCountEqual(self, [ 'MyCMakeFindPackageMultiName2Targets.cmake', 'MyCMakeFindPackageMultiNameConfig.cmake', 'MyCMakeFindPackageMultiName2Config.cmake', 'MyCMakeFindPackageMultiNameTargets.cmake', 'MyCMakeFindPackageMultiNameTarget-debug.cmake', 'MyCMakeFindPackageMultiName2Target-debug.cmake', 'MyCMakeFindPackageMultiNameConfigVersion.cmake', 'MyCMakeFindPackageMultiName2ConfigVersion.cmake' ], content.keys()) self.assertNotIn("MyPkG", content["MyCMakeFindPackageMultiNameConfig.cmake"]) self.assertNotIn("MyPkG", content["MyCMakeFindPackageMultiName2Config.cmake"]) self.assertIn( "add_library(MyCMakeFindPackageMultiName::MyCMakeFindPackageMultiName INTERFACE IMPORTED)", content["MyCMakeFindPackageMultiNameTargets.cmake"]) self.assertIn( "add_library(MyCMakeFindPackageMultiName2::MyCMakeFindPackageMultiName2 INTERFACE IMPORTED)", content["MyCMakeFindPackageMultiName2Targets.cmake"]) self.assertIn( "find_dependency(MyCMakeFindPackageMultiName REQUIRED NO_MODULE)", content["MyCMakeFindPackageMultiName2Config.cmake"])
def cmake_find_package_multi_test(self): generator = CMakeFindPackageMultiGenerator(self.conanfile) content = generator.content self.assertNotIn("not-a-cmake-module.pc", content["my_pkg2Target-release.cmake"]) self.assertIn('set(my_pkg_BUILD_MODULES_PATHS_RELEASE "dummy_root_folder1/my-module.cmake")', content["my_pkgTarget-release.cmake"]) self.assertIn('set(my_pkg2_BUILD_MODULES_PATHS_RELEASE "dummy_root_folder2/other-mod.cmake")', content["my_pkg2Target-release.cmake"])
def cmake_find_package_multi_version_test(self): # https://github.com/conan-io/conan/issues/6908 settings_mock = _MockSettings(build_type="Debug") conanfile = ConanFile(TestBufferConanOutput(), None) conanfile.initialize(settings_mock, EnvValues()) ref = ConanFileReference.loads("my_pkg/0.1@user/stable") cpp_info = CppInfo(ref.name, "") cpp_info.version = ref.version cpp_info.debug.libs = ["mylib"] conanfile.deps_cpp_info.add(ref.name, cpp_info) generator = CMakeFindPackageMultiGenerator(conanfile) content = generator.content config_version = content["my_pkgConfigVersion.cmake"] self.assertIn('set(PACKAGE_VERSION "0.1")', config_version)
def cmake_find_package_multi_test(self): generator = CMakeFindPackageMultiGenerator(self.conanfile) content = generator.content six.assertCountEqual(self, ['MyPkG2Targets.cmake', 'MyPkGConfig.cmake', 'MyPkG2Config.cmake', 'MyPkGTargets.cmake', 'MyPkGTarget-debug.cmake', 'MyPkG2Target-debug.cmake'], content.keys()) self.assertNotIn("my_pkg", content["MyPkGConfig.cmake"]) self.assertNotIn("MY_PKG", content["MyPkGConfig.cmake"]) self.assertNotIn("my_pkg", content["MyPkG2Config.cmake"]) self.assertNotIn("MY_PKG", content["MyPkG2Config.cmake"]) self.assertIn("add_library(MyPkG::MyPkG INTERFACE IMPORTED)", content["MyPkGTargets.cmake"]) self.assertIn("add_library(MyPkG2::MyPkG2 INTERFACE IMPORTED)", content["MyPkG2Targets.cmake"]) self.assertIn("find_dependency(MyPkG REQUIRED NO_MODULE)", content["MyPkG2Config.cmake"])