         switch key {
         case "Requires":
             dependencies = try parseDependencies(value)
+        case "Requires.private":
+            privateDependencies = try parseDependencies(value)
         case "Libs":
             libs = try splitEscapingSpace(value)
         case "Cflags":

    private let fileSystem: FileSystem
    private(set) var variables = [String: String]()
    var dependencies = [String]()
    var cFlags = [String]()
    var libs = [String]()


        var parser = PkgConfigParser(pcFile: pcFile, fileSystem: fileSystem)
        try parser.parse()

        func getFlags(from dependencies: [String]) throws -> (cFlags: [String], libs: [String]) {
            var cFlags = [String]()
            var libs = [String]()
            
            for dep in dependencies {
                // FIXME: This is wasteful, we should be caching the PkgConfig result.
                let pkg = try PkgConfig(
                    name: dep, 
                    additionalSearchPaths: additionalSearchPaths,
                    diagnostics: diagnostics,
                    brewPrefix: brewPrefix
                )

                cFlags += pkg.cFlags
                libs += pkg.libs
            }

            return (cFlags: cFlags, libs: libs)
        }

        let dependencyFlags = try getFlags(from: parser.dependencies)
        let privateDependencyFlags = try getFlags(from: parser.privateDependencies)

        self.cFlags = parser.cFlags + dependencyFlags.cFlags + privateDependencyFlags.cFlags
        self.libs = parser.libs + dependencyFlags.libs
    }

    private static var envSearchPaths: [AbsolutePath] {
