コード例 #1
0
ファイル: AttributeParsers.cs プロジェクト: kudaba/Sharpmake
        public override void ParseParameter(string[] parameters, FileInfo sourceFilePath, int lineNumber, IAssemblerContext context)
        {
            string reference = parameters[0];

            if (Util.IsPathWithWildcards(reference))
            {
                string referenceAbsolutePath = Path.IsPathRooted(reference) ? reference : null;
                referenceAbsolutePath = referenceAbsolutePath ?? Path.Combine(sourceFilePath.DirectoryName, reference);
                context.AddReferences(Util.DirectoryGetFilesWithWildcards(referenceAbsolutePath));
            }
            else
            {
                bool foundReference = false;
                foundReference = Assembler.DefaultReferences.Any(
                    defaultReference => FileSystemStringComparer.StaticCompare(defaultReference, reference) == 0
                    );

                if (!foundReference)
                {
                    foreach (string candidateReferenceLocation in EnumerateReferencePathCandidates(sourceFilePath, reference))
                    {
                        if (Util.FileExists(candidateReferenceLocation))
                        {
                            context.AddReference(candidateReferenceLocation);
                            foundReference = true;
                            break;
                        }
                    }
                }
                else if (Builder.Instance.Diagnostics)
                {
                    Util.LogWrite("{0}({1}): Warning: Reference '{2}' is redundant and can be removed since it is in the default reference list.", sourceFilePath.FullName, lineNumber, reference);
                }

                if (!foundReference)
                {
                    throw new Error(
                              "\t{0}({1}): error: Sharpmake.Reference file not found: {2}{3}Those paths were evaluated as candidates:{3}  - {4}",
                              sourceFilePath.FullName,
                              lineNumber,
                              reference,
                              Environment.NewLine,
                              string.Join(Environment.NewLine + "  - ", EnumerateReferencePathCandidates(sourceFilePath, reference))
                              );
                }
            }
        }
コード例 #2
0
        public override void ParseParameter(string[] parameters, FileInfo sourceFilePath, int lineNumber, IAssemblerContext context)
        {
            string reference = parameters[0];

            if (Util.IsPathWithWildcards(reference))
            {
                string referenceAbsolutePath = Path.IsPathRooted(reference) ? reference : null;
                referenceAbsolutePath = referenceAbsolutePath ?? Path.Combine(sourceFilePath.DirectoryName, reference);
                context.AddReferences(Util.DirectoryGetFilesWithWildcards(referenceAbsolutePath));
            }
            else
            {
                bool foundReference = false;
                foreach (string candidateReferenceLocation in EnumerateReferencePathCandidates(sourceFilePath, reference))
                {
                    if (Util.FileExists(candidateReferenceLocation))
                    {
                        context.AddReference(candidateReferenceLocation);
                        foundReference = true;
                        break;
                    }
                }

                if (!foundReference)
                {
                    throw new Error(
                              "\t{0}({1}): error: Sharpmake.Reference file not found: {2}{3}Those paths were evaluated as candidates:{3}  - {4}",
                              sourceFilePath.FullName,
                              lineNumber,
                              reference,
                              Environment.NewLine,
                              string.Join(Environment.NewLine + "  - ", EnumerateReferencePathCandidates(sourceFilePath, reference))
                              );
                }
            }
        }