def single_pc_file_contents(self, name, cpp_info, comp_requires_gennames, is_component=False): prefix_path = cpp_info.rootpath.replace("\\", "/") lines = ['prefix=%s' % prefix_path] libdir_vars = [] dir_lines, varnames = self._generate_dir_lines(prefix_path, "libdir", cpp_info.lib_paths) if dir_lines: libdir_vars = varnames lines.extend(dir_lines) includedir_vars = [] dir_lines, varnames = self._generate_dir_lines(prefix_path, "includedir", cpp_info.include_paths) if dir_lines: includedir_vars = varnames lines.extend(dir_lines) lines.append("") lines.append("Name: %s" % name) description = cpp_info.description or "Conan package: %s" % name lines.append("Description: %s" % description) lines.append("Version: %s" % cpp_info.version) libdirs_flags = ["-L${%s}" % name for name in libdir_vars] libnames_flags = ["-l%s " % name for name in (cpp_info.libs + cpp_info.system_libs)] shared_flags = cpp_info.sharedlinkflags + cpp_info.exelinkflags os_build, _ = get_build_os_arch(self.conanfile) if not hasattr(self.conanfile, 'settings_build'): os_build = os_build or self.conanfile.settings.get_safe("os") rpaths = rpath_flags(self.conanfile.settings, os_build, ["${%s}" % libdir for libdir in libdir_vars]) frameworks = format_frameworks(cpp_info.frameworks, self.conanfile.settings) framework_paths = format_framework_paths(cpp_info.framework_paths, self.conanfile.settings) lines.append("Libs: %s" % _concat_if_not_empty([libdirs_flags, libnames_flags, shared_flags, rpaths, frameworks, framework_paths])) include_dirs_flags = ["-I${%s}" % name for name in includedir_vars] lines.append("Cflags: %s" % _concat_if_not_empty( [include_dirs_flags, cpp_info.cxxflags, cpp_info.cflags, ["-D%s" % d for d in cpp_info.defines]])) if comp_requires_gennames: if is_component: pkg_config_names = comp_requires_gennames else: pkg_config_names = [] for public_dep in cpp_info.public_deps: name = self.deps_build_info[public_dep].get_name(PkgConfigGenerator.name) pkg_config_names.append(name) public_deps = " ".join(pkg_config_names) lines.append("Requires: %s" % public_deps) return "\n".join(lines) + "\n"
def _configure_link_flags(self): """Not the -L""" ret = copy.copy(self._deps_cpp_info.sharedlinkflags) ret.extend(self._deps_cpp_info.exelinkflags) ret.extend( format_frameworks(self._deps_cpp_info.frameworks, self._conanfile.settings)) ret.extend( format_framework_paths(self._deps_cpp_info.framework_paths, self._conanfile.settings)) arch_flag = architecture_flag(self._conanfile.settings) if arch_flag: ret.append(arch_flag) sysf = sysroot_flag(self._deps_cpp_info.sysroot, self._conanfile.settings, win_bash=self._win_bash, subsystem=self.subsystem) if sysf: ret.append(sysf) if self._include_rpath_flags: os_build, _ = get_build_os_arch(self._conanfile) if not hasattr(self._conanfile, 'settings_build'): os_build = os_build or self._os ret.extend( rpath_flags(self._conanfile.settings, os_build, self._deps_cpp_info.lib_paths)) return ret
def _configure_link_flags(self): """Not the -L""" ret = copy.copy(self._deps_cpp_info.sharedlinkflags) ret.extend(self._deps_cpp_info.exelinkflags) ret.extend( format_frameworks(self._deps_cpp_info.frameworks, compiler=self._compiler)) ret.extend( format_framework_paths(self._deps_cpp_info.framework_paths, compiler=self._compiler)) arch_flag = architecture_flag(compiler=self._compiler, os=self._os, arch=self._arch) if arch_flag: ret.append(arch_flag) sysf = sysroot_flag(self._deps_cpp_info.sysroot, win_bash=self._win_bash, subsystem=self.subsystem, compiler=self._compiler) if sysf: ret.append(sysf) if self._include_rpath_flags: the_os = self._conanfile.settings.get_safe("os_build") or self._os ret.extend( rpath_flags(the_os, self._compiler, self._deps_cpp_info.lib_paths)) return ret
def _pc_file_content(self, name, cpp_info, requires_gennames): version = cpp_info.get_property("component_version") or cpp_info.version prefix_path = cpp_info.rootpath.replace("\\", "/") lines = ['prefix=%s' % prefix_path] libdir_vars = [] dir_lines, varnames = self._generate_dir_lines(prefix_path, "libdir", cpp_info.lib_paths) if dir_lines: libdir_vars = varnames lines.extend(dir_lines) includedir_vars = [] dir_lines, varnames = self._generate_dir_lines(prefix_path, "includedir", cpp_info.include_paths) if dir_lines: includedir_vars = varnames lines.extend(dir_lines) pkg_config_custom_content = cpp_info.get_property("pkg_config_custom_content") if pkg_config_custom_content: lines.append(pkg_config_custom_content) lines.append("") lines.append("Name: %s" % name) description = cpp_info.description or "Conan package: %s" % name lines.append("Description: %s" % description) lines.append("Version: %s" % version) libdirs_flags = ['-L"${%s}"' % name for name in libdir_vars] libnames_flags = ["-l%s " % name for name in (cpp_info.libs + cpp_info.system_libs)] shared_flags = cpp_info.sharedlinkflags + cpp_info.exelinkflags os_build, _ = get_build_os_arch(self.conanfile) if not hasattr(self.conanfile, 'settings_build'): os_build = os_build or self.conanfile.settings.get_safe("os") rpaths = rpath_flags(self.conanfile.settings, os_build, ["${%s}" % libdir for libdir in libdir_vars]) frameworks = format_frameworks(cpp_info.frameworks, self.conanfile.settings) framework_paths = format_framework_paths(cpp_info.framework_paths, self.conanfile.settings) lines.append("Libs: %s" % _concat_if_not_empty([libdirs_flags, libnames_flags, shared_flags, rpaths, frameworks, framework_paths])) include_dirs_flags = ['-I"${%s}"' % name for name in includedir_vars] lines.append("Cflags: %s" % _concat_if_not_empty( [include_dirs_flags, [flag.replace('"', '\\"') for flag in cpp_info.cxxflags], [flag.replace('"', '\\"') for flag in cpp_info.cflags], ["-D%s" % d.replace('"', '\\"') for d in cpp_info.defines]])) if requires_gennames: public_deps = " ".join(requires_gennames) lines.append("Requires: %s" % public_deps) return "\n".join(lines) + "\n"
def content(self): """With compiler_args you can invoke your compiler: $ gcc main.c @conanbuildinfo.args -o main $ clang main.c @conanbuildinfo.args -o main $ cl /EHsc main.c @conanbuildinfo.args """ flags = [] flags.extend(format_defines(self._deps_build_info.defines)) flags.extend(format_include_paths(self._deps_build_info.include_paths, compiler=self.compiler)) flags.extend(self._deps_build_info.cxxflags) flags.extend(self._deps_build_info.cflags) arch_flag = architecture_flag(arch=self.conanfile.settings.get_safe("arch"), os=self.conanfile.settings.get_safe("os"), compiler=self.compiler) if arch_flag: flags.append(arch_flag) build_type = self.conanfile.settings.get_safe("build_type") btfs = build_type_flags(compiler=self.compiler, build_type=build_type, vs_toolset=self.conanfile.settings.get_safe("compiler.toolset")) if btfs: flags.extend(btfs) btd = build_type_define(build_type=build_type) if btd: flags.extend(format_defines([btd])) if self.compiler == "Visual Studio": runtime = visual_runtime(self.conanfile.settings.get_safe("compiler.runtime")) if runtime: flags.append(runtime) # Necessary in the "cl" invocation before specify the rest of linker flags flags.append(visual_linker_option_separator) os_build, _ = get_build_os_arch(self.conanfile) if not hasattr(self.conanfile, 'settings_build'): os_build = os_build or self.conanfile.settings.get_safe("os") flags.extend(rpath_flags(os_build, self.compiler, self._deps_build_info.lib_paths)) flags.extend(format_library_paths(self._deps_build_info.lib_paths, compiler=self.compiler)) flags.extend(format_libraries(self._deps_build_info.libs, compiler=self.compiler)) flags.extend(format_libraries(self._deps_build_info.system_libs, compiler=self.compiler)) flags.extend(self._deps_build_info.sharedlinkflags) flags.extend(self._deps_build_info.exelinkflags) flags.extend(self._libcxx_flags()) flags.extend(format_frameworks(self._deps_build_info.frameworks, compiler=self.compiler)) flags.extend(format_framework_paths(self._deps_build_info.framework_paths, compiler=self.compiler)) flags.append(cppstd_flag(self.conanfile.settings)) sysrf = sysroot_flag(self._deps_build_info.sysroot, compiler=self.compiler) if sysrf: flags.append(sysrf) return " ".join(flag for flag in flags if flag)
def single_pc_file_contents(self, name, cpp_info): prefix_path = cpp_info.rootpath.replace("\\", "/") lines = ['prefix=%s' % prefix_path] libdir_vars = [] dir_lines, varnames = _generate_dir_lines(prefix_path, "libdir", cpp_info.libdirs) if dir_lines: libdir_vars = varnames lines.extend(dir_lines) includedir_vars = [] dir_lines, varnames = _generate_dir_lines(prefix_path, "includedir", cpp_info.includedirs) if dir_lines: includedir_vars = varnames lines.extend(dir_lines) lines.append("") lines.append("Name: %s" % name) description = cpp_info.description or "Conan package: %s" % name lines.append("Description: %s" % description) lines.append("Version: %s" % cpp_info.version) libdirs_flags = ["-L${%s}" % name for name in libdir_vars] libnames_flags = [ "-l%s " % name for name in (cpp_info.libs + cpp_info.system_libs) ] shared_flags = cpp_info.sharedlinkflags + cpp_info.exelinkflags the_os = (self.conanfile.settings.get_safe("os_build") or self.conanfile.settings.get_safe("os")) rpaths = rpath_flags(the_os, self.compiler, ["${%s}" % libdir for libdir in libdir_vars]) frameworks = format_frameworks(cpp_info.frameworks, compiler=self.compiler) framework_paths = format_framework_paths(cpp_info.framework_paths, compiler=self.compiler) lines.append("Libs: %s" % _concat_if_not_empty([ libdirs_flags, libnames_flags, shared_flags, rpaths, frameworks, framework_paths ])) include_dirs_flags = ["-I${%s}" % name for name in includedir_vars] lines.append("Cflags: %s" % _concat_if_not_empty([ include_dirs_flags, cpp_info.cxxflags, cpp_info.cflags, ["-D%s" % d for d in cpp_info.defines] ])) if cpp_info.public_deps: pkg_config_names = [] for public_dep in cpp_info.public_deps: pkg_config_names.append( _get_name(public_dep, self.deps_build_info[public_dep])) public_deps = " ".join(pkg_config_names) lines.append("Requires: %s" % public_deps) return "\n".join(lines) + "\n"